4
例如,在下面的代碼:當從另一個異常處理堆棧時引發異常時會發生什麼?
#include <iostream>
using namespace std;
class A {
public:
A() { cout << "A::A()" << endl; }
~A() { cout << "A::~A()" << endl; throw "A::exception"; }
};
class B {
public:
B() { cout << "B::B()" << endl; throw "B::exception"; }
~B() { cout << "B::~B()"; }
};
int main(int, char**)
{
try {
cout << "Entering try...catch block" << endl;
A objectA;
B objectB;
cout << "Exiting try...catch block" << endl;
}
catch (char* ex) {
cout << ex << endl;
}
return 0;
}
B
的析構函數拋出異常,這將調用A
的析構函數而展開堆棧,從而導致另一個異常的拋出。 該計劃的反應是什麼?
重複:http://stackoverflow.com/questions/130117/throwing-exceptions-out-of-一,析構函數 – 2010-07-23 14:13:34