我可以在C++中实现全局异常处理吗?我的要求是,try...catch块不用于一段代码中,那么应该有一个全局异常处理程序,它将处理所有未处理的异常。
我能做到吗,请给出你的宝贵建议:)
发布于 2010-12-06 14:06:46
我总是将最外层的函数封装在这样的试捕捉中:
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,以便用户可以对其进行操作。
发布于 2010-12-06 13:27:19
您可以使用set_terminate和current_exception()的组合
发布于 2010-12-06 13:29:01
在C++中,当异常未知时调用terminate函数。您可以使用set_terminate函数安装您自己的终止处理程序。缺点是终止处理程序可能永远不会返回;它必须使用某种操作系统原语终止程序。默认情况下只需调用abort()
https://stackoverflow.com/questions/4366739
复制相似问题