我可以实现在C++全局异常处理? 我的要求是try ... catch块是不是在一段代码使用,那么应该有一个全球性的异常处理程序将处理所有未捕获的异常。全球异常处理
我能做到的话,请给您的宝贵建议:)
我可以实现在C++全局异常处理? 我的要求是try ... catch块是不是在一段代码使用,那么应该有一个全球性的异常处理程序将处理所有未捕获的异常。全球异常处理
我能做到的话,请给您的宝贵建议:)
可以使用的set_terminate
和current_exception()
在C++相结合的terminate
函数被调用时,一个例外是未捕获的。您可以使用set_terminate
函数安装您自己的终止处理程序。缺点是你的终止处理程序可能永远不会返回;它必须用一些操作系统原语来终止你的程序。默认是只为了呼唤abort()
当一个异常升高时,如果在该点没有被捕获,其上升的层次结构,直到它实际上是抓住了。如果没有代码来处理异常,则程序终止。
可以运行特定的代码,终止使用自己的set_unexpected
或set_terminate
处理程序做清理工作之前,我一直包在最外面的功能在一个try-catch这样的:
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++中良好的异常处理并不是要全面编写try-catch,而是要知道如何处理它(就像你想要做的那样)。在这种情况下,唯一要做的就是将错误消息写入stderr,以便用户可以对其执行操作。
有C中没有的try ... catch块呢。你在想C++吗? – 2010-12-06 13:16:49
谢谢Karl,我已将它改为C++。 – 2010-12-06 13:20:09
此MSDN论坛线程可能会提供一些有用的链接:http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/99cbe120-d8a9-448f-b827-8b61ca0a6a27 – 2010-12-06 13:31:53