异常处理深度解析
Posted 学习只为旅行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理深度解析相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <cstdlib>
#include <exception>
using namespace std;
void my_terminate()
{
cout << "void my_terminate()" << endl;
exit(1);//结束当前函数
}
class Test
{
public:
Test()
{
cout << "Test()";
cout << endl;
}
~Test()
{
cout << "~Test()";
cout << endl;
}
};
int main()
{
set_terminate(my_terminate);//设置异常处理函数
static Test t;
throw 1;
return 0;
}
打印:
Test()
void my_terminate()
~Test()
#include <iostream>
#include <cstdlib>
#include <exception>
using namespace std;
void my_terminate()
{
cout << "void my_terminate()" << endl;
exit(1);
//abort();//C++编译器默认是调用这个函数,直接强制结束程序,防止析构函数还会抛异常
//my_terminate()被调用两次,资源被释放两次,很危险
}
class Test
{
public:
Test()
{
cout << "Test()";
cout << endl;
}
~Test()
{
cout << "~Test()";
cout << endl;
throw 2;
}
};
int main()
{
set_terminate(my_terminate);
static Test t;
throw 1;
return 0;
}
应该将exit注释掉,使用abort函数
小结
以上是关于异常处理深度解析的主要内容,如果未能解决你的问题,请参考以下文章