Par exemple, dans le code suivant:Que se passe-t-il lorsqu'une exception est levée lors du déroulement de la pile d'une autre exception?
#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
's destructor déclenche une exception, qui appelle A
' destructor s tandis que le déroulement de la pile, ce qui entraîne la remise d'une autre exception. Quelle sera la réaction du programme?
double: http://stackoverflow.com/questions/130117/throwing-exceptions-out-of- un-destructeur –