如果发生未处理的异常,C++ 是否提供了一种“显示”视觉效果的方法?
我想要做的是制作类似 assert(unhandled exception.msg())
如果它真的发生(如以下示例):
#include <stdexcept>
void foo() {
throw std::runtime_error("Message!");
}
int main() {
foo();
}
我希望这种代码不会立即终止(因为未处理异常),而是显示自定义断言消息(实际上是 Message!
)。
那可能吗?
原文由 Yippie-Ki-Yay 发布,翻译遵循 CC BY-SA 4.0 许可协议
标准没有规定实际显示未捕获异常的消息的方法。但是,在许多平台上,无论如何都是可能的。在 Windows 上,您可以使用 SetUnhandledExceptionFilter 并提取 C++ 异常信息。使用 g++(无论如何的适当版本),终止处理程序可以使用以下代码访问未捕获的异常:
确实 g++ 的默认终止处理程序做了类似的事情。您可以使用 set_terminate 设置终止处理程序。
简而言之,没有通用的 C++ 方法,但有一些方法取决于您的平台。