Qt4 如何记录QApplication的未捕获异常?

Qt4 如何记录QApplication的未捕获异常?,qt4,pyqt4,Qt4,Pyqt4,我应该在哪里使用except块来记录QApplication的异常 这似乎不起作用: app = QtGui.QApplication(sys.argv) MainWindow = MainWindow() MainWindow.show() try: eventLoop = app.exec_() except Exception, e: log.exception(str(e)) 因为异常甚至不会到达该块。在Qt中不支持从事件处理程序引发异常。您必须重新实现QApplica

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

这似乎不起作用:

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

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

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

覆盖函数boolqapplication::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();
     }
}
虚拟布尔通知(QObject*接收器,QEvent*事件)
{
尝试
{
返回QApplication::notify(接收者、事件);
} 
捕获(标准::异常&e)
{

qDebug()我通过重写<代码>例外的< />代码,如下面的答案:

不适用于qApple。通知C++ C++异常,我需要捕获Python异常。我怎么办?我是说,我应该把这个代码翻译成Python还是制作一个C++文件并让Python导入它?我丢失了,因为这个代码是C++和我们。我们正在谈论python。