qfedu-cpp-level/day8/d5.cpp

30 lines
627 B
C++

// 栈解旋(unwinding):当抛出异常时,会调用所有对象的析构函数
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class A
{
public:
A() { cout << "A()" << endl; }
~A() { cout << "~A()" << endl; }
};
int main()
{
try
{
A a1;
// 栈解旋(unwinding):当抛出异常时,会调用所有对象的析构函数
throw 0; // 抛出异常时,则会调用 a1 的析构函数
}
catch (...) // ... 表示其他异常,可以不写,写的话必须放在最后
{
cout << "异常被处理" << endl;
}
return 0;
}