我想在QApplication::QApplication例程中捕获未被察觉的异常,以便优雅地关闭。但是应用程序崩溃了
我在Windows上使用QT5.6,并使用了MIMW5.3.0 x64。
你知道我做错了什么吗?
#include <QApplication>
#include <QObject>
#include <QtDebug>
#include <QTimer>
class TestApplication Q_DECL_FINAL : public QApplication
{
Q_OBJECT
public:
TestApplication(int &argc, char **argv) : QApplication(argc, argv) {}
bool notify(QObject *receiver, QEvent *event) {
try {
return QApplication::notify(receiver, event);
} catch(std::exception& e) {
qCritical() << qPrintable(QString("Exception thrown: %1").arg(e.what()));
}
return false;
}
};
#include "main.moc"
int main(int argc, char *argv[])
{
TestApplication a(argc, argv);
QTimer timer;
timer.setSingleShot(true);
QObject::connect(&timer, &QTimer::timeout, []() {
throw 1;
});
timer.start(5000);
return a.exec();
}发布于 2016-10-07 12:24:29
尝试使用实际的异常对象而不是int。比如“抛出std::exception()”。工作于QT5.7明威Win10。
https://stackoverflow.com/questions/39851777
复制相似问题