#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; throw E5(); cout << "< B6" << endl; } // B6 catch( E7 ) { cout << "B6: E7 handler" << endl; } catch( E8 ) { cout << "B6: E8 handler" << endl; } catch( E9 ) { cout << "B6: E9 handler" << endl; } // C1-C3 cout << "< B5" << endl; } // B5 cout << "< B4" << endl; } // B4 catch( E4 ) { cout << "B4: E4 handler" << endl; } catch( E5 ) { cout << "B4: E5 handler reraising" << endl; throw; cout << "B4: E5 handler after reraise" << endl; } catch( E6 ) { cout << "B4: E6 handler" << endl; } // C4-C6 cout << "< B3" << endl; } // B3 catch( E3 ) { cout << "B3: E3 handler" << endl; } // C7 cout << "< B2" << endl; } // B2 catch( E5 ) { cout << "B2: E5 handler" << endl; } catch( E2 ) { cout << "B2: E2 handler" << endl; } // C8-C9 cout << "< B1" << endl; } // B1