QT捕获全部异常
在Qt中,可以通过重载QCoreApplication::notify()函数来捕获全部异常。该函数在Qt中所有的事件循环中都会被调用,包括GUI事件循环和非GUI事件循环。
以下是一个示例:
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <exception>
class Application : public QCoreApplication
{
public:
Application(int &argc, char **argv) : QCoreApplication(argc, argv) {}
protected:
bool notify(QObject *receiver, QEvent *event) override
{
try {
return QCoreApplication::notify(receiver, event);
} catch (const std::exception &e) {
qCritical() << "Exception caught:" << e.what();
} catch (...) {
qCritical() << "Unknown exception caught";
}
return false;
}
};
int main(int argc, char **argv)
{
Application app(argc, argv);
// your code here
return app.exec();
}
在上面的代码中,我们重载了QCoreApplication::notify()函数,并在其中加入了异常处理逻辑。当任何异常被抛出时,该函数会在捕获异常后打印异常信息并返回false,以表示事件未被正确处理。这样就可以在Qt应用程序的任何地方捕获并处理异常了
原文地址: https://www.cveoy.top/t/topic/cptd 著作权归作者所有。请勿转载和采集!