Where should i use an except block in order to log exceptions of a QApplication
?
This doesn't seem to work:
app = QtGui.QApplication(sys.argv)
MainWindow = MainWindow()
MainWindow.show()
try:
eventLoop = app.exec_()
except Exception, e:
log.exception(str(e))
as the exception won't even reach that block.
Throwing exceptions from an event handler is not supported in Qt. You must reimplement QApplication::notify() and catch all exceptions there.
Overwrite the function bool QApplication::notify(QObject * receiver, QEvent *event) so that it catches all thrown exceptions.
You can implement like this.
virtual bool notify(QObject * receiver, QEvent * event)
{
try
{
return QApplication::notify(receiver, event);
}
catch(std::exception& e)
{
qDebug() << "Exception thrown:" << e.what();
}
}
I solved it by overriding the excepthook
, as seen in the following answer: Logging All Exceptions in a pyqt4 app