首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中的全局异常处理

C++中的全局异常处理
EN

Stack Overflow用户
提问于 2010-12-06 13:15:04
回答 5查看 16K关注 0票数 9

我可以在C++中实现全局异常处理吗?我的要求是,try...catch块不用于一段代码中,那么应该有一个全局异常处理程序,它将处理所有未处理的异常。

我能做到吗,请给出你的宝贵建议:)

EN

回答 5

Stack Overflow用户

发布于 2010-12-06 14:06:46

我总是将最外层的函数封装在这样的试捕捉中:

代码语言:javascript
复制
int main()
{
   try {
      // start your program/function
      Program program; program.Run();
   }
   catch (std::exception& ex) {
      std::cerr << ex.what() << std::endl;
   }
   catch (...) {
      std::cerr << "Caught unknown exception." << std::endl;
   }
}

这会抓住一切的。在C++中,好的异常处理不是编写所有的尝试-捕获,而是捕获您知道如何处理它的地方(就像您似乎想要做的那样)。在这种情况下,唯一要做的事情是将错误消息写入stderr,以便用户可以对其进行操作。

票数 8
EN

Stack Overflow用户

发布于 2010-12-06 13:27:19

您可以使用set_terminatecurrent_exception()的组合

票数 5
EN

Stack Overflow用户

发布于 2010-12-06 13:29:01

在C++中,当异常未知时调用terminate函数。您可以使用set_terminate函数安装您自己的终止处理程序。缺点是终止处理程序可能永远不会返回;它必须使用某种操作系统原语终止程序。默认情况下只需调用abort()

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4366739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档