我一直在研究如何使用Qt/C++处理错误,但始终感到迷茫。也许我想找到一个简单的方法(就像其他编程语言提供的那样)。有一种特殊的方式可以提供未处理异常,我非常频繁地使用它。当程序遇到问题时,会抛出未处理异常,以便我可以创建自己的错误报告。该报告会从客户机器发送到在线服务器,我稍后再查看。
我在C++中遇到的问题是必须事先考虑好任何错误处理(例如尝试/捕获或大量条件判断)。在我的经验中,代码中的问题通常是没有事先考虑到的,否则就不会有问题了。
没有跨平台的错误处理/报告/追踪机制给我带来了一点恐惧感。
我的问题是:是否有任何Qt或C++具体的“全局”错误捕获机制,我可以在应用程序中使用,以便如果发生故障,至少可以在崩溃之前写入报告?
示例:
class MainWindow: public QMainWindow
{
[...]
public slots:
void add_clicked();
}
void MainWindow::add_clicked()
{
QFileDialog dlg(this, Qt::Sheet);
QString filename = dlg.getOpenFileName(this);
if(!filename.isEmpty())
{
QStringList path = filename.split(QDir::separator());
QString file = path.at(path.count()); // Index out of range assertion.
if(!lst_tables->openDatabase(filename))
{
[...]
}
}
}
我希望这个错误能够被捕获为未处理的异常,并且在Windows / Mac操作系统上退出应用程序而不显示默认的崩溃窗口。 我只想在将断言消息写入文件等操作后优雅地退出。