Excepciones de seguridad de los controladores de eventos PyQt

Aquí está el código que ilustra el problema:

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'

Cuando ejecuto eso, PyQt4 maneja el error por mí. Mi consola muestra una traza de pila con 'Crash!' en el mismo, y veo "No debería suceder".

Esto no es útil, porque me han entregado una aplicación grande con muchos manejadores, y necesito forzartodos sus errores en mi cara (y en mis - ejem - pruebas automatizadas). Cada vez que corro, los errores escapan de mis redes y requieren un intento excesivo e inútil: excepto los bloques, dentro de cada controlador, solo para atraparlos a todos.

Dicho de otra manera, quiero que el código bueno sea muy bueno y que el código malo sea muy malo. No blanqueado.

Le pido disculpas si esto ya se ha pedido, pero cuando lo busco, naturalmente recibo miles de novatos que hacen preguntas básicas sobre el manejo de errores (o, peor aún, me preguntan cómo desactivar sus excepciones descontroladas).

¿Cómo anulo el manejo de errores predeterminado de PyQt4, para que pueda propagar o registrar errores yo mismo? Y, por favor, tampoco responda a sys.excepthook, ya que detecta los errores que PyQt4no hace captura.

Respuestas a la pregunta(2)

Su respuesta a la pregunta