如果发生未处理的异常,C++ 是否提供了一种“显示”可视化内容的方法?
我想做的是做一些像assert(unhandled exception.msg())
如果它确实发生(如下面的示例所示):
#include <stdexcept>
void foo() {
throw std::runtime_error("Message!");
}
int main() {
foo();
}
我希望这种代码不会立即终止(因为异常未处理),而是显示自定义断言消息(Message!
实际上)。
那可能吗?
标准没有指定实际显示未捕获异常的消息的方法。然而,在许多平台上,无论如何都是可能的。在 Windows 上,您可以使用 SetUnhandledExceptionFilter 并提取 C++ 异常信息。使用 g++(无论如何适当的版本),终止处理程序可以使用如下代码访问未捕获的异常:
void terminate_handler()
{
try { throw; }
catch(const std::exception& e) { log(e.what()); }
catch(...) {}
}
事实上,g++ 的默认终止处理程序执行与此类似的操作。您可以使用 set_terminate 设置终止处理程序。
简而言之,没有通用的 C++ 方法,但有一些方法取决于您的平台。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)