【发布时间】:2015-09-20 00:15:42
【问题描述】:
如果我写
try {
throw std::exception("Exception");
} catch (std::exception& ex) {
qDebug("Game Over");
}
在我的主函数内(或其他任何地方),我的 Qt 应用程序崩溃了。 Exception handling doesn't work with Qt on Windows 已经描述了这种效果(5 年前)。
原始发布者显然通过自己重新配置和重建 Qt SDK(明确启用-exceptions)解决了这个问题,但我很难相信所有 Qt 二进制文件都关闭了异常,并且每个使用异常的人都必须这样做这个。
谁能指出我记录在案的地方,告诉我这是真的还是我在这里做错了什么?
我现在使用的是带有 MSVC2013、Win 7 的 Qt 5.4.2(从 here 下载了 qt-opensource-windows-x86-msvc2013_opengl-5.4.2.exe)。
【问题讨论】:
-
这甚至不应该编译,
std::exception没有接受const char*参数的构造函数。std::exception仅用作实际异常的基类。尝试例如throw std::runtime_error("Exception");代替。 -
@BaummitAugen 我明白了。我没有得到任何构建错误。那告诉我什么?此外,我需要捕获的不是这个特定的异常,而是第 3 方库抛出的异常。有什么想法吗?
-
“这告诉我什么?” 显然,您的标准库实现提供了非标准功能。 “对此有任何想法吗?” 不,我无法回答这个问题,我从未使用过 QT。以上只是旧约的评论,并不意味着答案。这就是为什么我将其发布为评论而不是答案。 :)
-
@BaummitAugen 这是一个 MSVC 扩展。