vla*_*don 3 c++ exception-handling c++11
我已经读过,可以调用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;
}
Run Code Online (Sandbox Code Playgroud)
为什么my_terminate_handler()从未调用过?在VC++ 2013,2015 RC和gcc ++ - 4.8中都有.
Mik*_*our 13
如果程序调用,将调用终止处理程序terminate.这种情况可能由于各种原因而发生 - 包括未捕获的异常 - 但除以零不是其中一个原因.这给出了未定义的行为; 通常,它会引发一个信号(不是C++异常),你需要安装一个信号处理程序,而不是终止处理程序来捕获它.
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |