title: PyQt event handlers snarf exceptions
body: <p>Here's the code that illustrates the problem:</p>
  
  <pre><code>from PyQt4 import QtGui
  app = QtGui.QApplication([])
  dialog = QtGui.QDialog()
  button = QtGui.QPushButton('I crash')
  layout = QtGui.QHBoxLayout()
  layout.addWidget(button)
  dialog.setLayout(layout)
  def crash(): raise Exception('Crash!')
  button.clicked.connect(crash)
  button.click()
  print 'I should not happen'
  </code></pre>
  
  <p>When I run that, PyQt4 handles the error for me. My console displays a stack trace with 'Crash!' etc. in it, and I see 'I should not happen'.</p>
  
  <p>This is not useful, because I've been handed a large application with many handlers, and I need to force <em>all</em> their errors up into my face (and into my - ahem - automated tests). Each time I run, errors escape my nets, and they would require excessive and useless try:except blocks, inside every handler, just to catch them all.</p>
  
  <p>Put another way, I want good code to be very good, and bad code to be very bad. Not whitewashed.</p>
  
  <p>Apologies if this is already asked, but when I e-search for it, I naturally get thousands of newbies asking basic error handling questions (or, worse, I get newbies asking how to turn OFF their wayward exceptions!;)</p>
  
  <p>How do I override PyQt4's default error handling, so I can propagate or log errors myself? And please don't answer sys.excepthook, either - it catches the errors that PyQt4 <em>doesn't</em> catch.</p>