【发布时间】:2015-05-12 07:07:36
【问题描述】:
我读到可以调用std::set_terminate() 来使用自己的函数作为全局异常处理程序,它会捕获所有未处理的异常。
我的程序的简化代码:
#include <exception>
#include <stdexcept>
#include <iostream>
void my_terminate_handler()
{
std::cerr << "Terminate handler" << std::endl;
std::cin.get();
std::abort();
}
int main()
{
std::set_terminate(my_terminate_handler);
int i = 1;
i--;
std::cout << 1/i << std::endl;
return 0;
}
为什么从未调用过my_terminate_handler()?在 VC++ 2013、2015 RC 和 gcc++-4.8 中。
【问题讨论】:
标签: c++ c++11 exception-handling