6

我应该在哪里使用 except 块来记录 a 的异常QApplication

这似乎不起作用:

app = QtGui.QApplication(sys.argv)
MainWindow = MainWindow()
MainWindow.show()
try:
    eventLoop = app.exec_()
except Exception, e:
    log.exception(str(e))

因为异常甚至不会到达那个块。

4

2 回答 2

5

Qt 不支持从事件处理程序中抛出异常。您必须重新实现 QApplication::notify() 并在那里捕获所有异常。

覆盖函数 bool QApplication::notify(QObject * receiver, QEvent *event) 以便捕获所有抛出的异常。

你可以这样实现。

virtual bool notify(QObject * receiver, QEvent * event) 
{
     try 
     {
     return QApplication::notify(receiver, event);
     } 
     catch(std::exception& e) 
     {
      qDebug() << "Exception thrown:" << e.what();
     }
}
于 2012-05-19T18:38:50.433 回答
0

我通过覆盖来解决它excepthook,如以下答案所示:Logging All Exceptions in a pyqt4 app

于 2012-05-20T21:25:45.763 回答