【发布时间】:2014-10-13 17:51:31
【问题描述】:
我希望下面的代码调用我的 unexpected 处理程序,但我的 terminate 处理程序被调用了:
#include <except>
#include <iostream>
void my_terminate() {
std::cerr << "my terminate handler";
std::exit(0);
}
void my_unexpected() {
std::cerr << "my unexpected handler";
std::exit(EXIT_FAILURE);
}
#pragma argsused
int main(int argc, char* argv[])
{
std::set_terminate(my_terminate);
std::set_unexpected(my_unexpected);
try {
throw std::exception();
} catch (const std::logic_error&) {
}
return 0;
}
C++ Builder 6 Developer's Guide 明确鼓励通过set_unexpected() 安装自定义的意外处理程序。 我做错了什么,或者这只是 C++-Builder 6 中的错误?
【问题讨论】:
-
如果你删除
catch (const std::logic_error&)会发生什么? -
@stijn 你的意思是整个 try-catch 的事情?一样。
标签: c++ exception terminate c++builder-6