gpt4 book ai didi

C++ 未处理的异常

转载 作者:可可西里 更新时间:2023-11-01 18:03:43 25 4
gpt4 key购买 nike

如果发生未处理的异常,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++ 方法,但有一些方法取决于您的平台。

关于C++ 未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com