#include using namespace std; _Event E1 {}; _Event E2 {}; _Event E3 {}; _Event E4 {}; _Event E5 {}; _Event E6 {}; _Event E7 {}; _Event E8 {}; _Event E9 {}; int main() { // B1 cout << "> B1" << endl; try { // B2 cout << "> B2" << endl; try { // B3 cout << "> B3" << endl; try { // B4 cout << "> B4" << endl; { // B5 cout << "> B5" << endl; try { // B6 cout << "> B6" << endl; _Resume E5(); cout << "< B6" << endl; } // B6 _CatchResume( E7 ) { cout << "B6: E7 handler" << endl; } _CatchResume( E8 ) { cout << "B6: E8 handler" << endl; } _CatchResume( E9 ) { cout << "B6: E9 handler" << endl; } // C1-C3 cout << "< B5" << endl; } // B5 cout << "< B4" << endl; } // B4 _CatchResume( E4 ) { cout << "B4: E4 handler" << endl; } _CatchResume( E5 ) { cout << "B4: E5 handler reraising" << endl; #ifdef RES _Resume; #else throw; // Yikes!!! #endif cout << "B4: E5 handler after reraise" << endl; } _CatchResume( E6 ) { cout << "B4: E6 handler" << endl; } // C4-C6 cout << "< B3" << endl; } // B3 _CatchResume( E3 ) { cout << "B3: E3 handler" << endl; } // C7 cout << "< B2" << endl; } // B2 _CatchResume( E5 ) { cout << "B2: E5 handler" << endl; } _CatchResume( E2 ) { cout << "B2: E2 handler" << endl; } // C8-C9 cout << "< B1" << endl; } // B1