#include <iostream>
#include <exception>
class E1 : public std::exception {};
class E2 : public std::exception {};
int main() {
try {
throw E2();
}
catch( ... ) {
//Do lots of complicated things here
//Without the nesting, all the complicated things would have to be repeated twice
try {
throw;
}
catch( const E1 & e ) {
std::cout << "E1\n";
}
catch( const E2 & e ) {
std::cout << "E2\n";
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZXhjZXB0aW9uPgoKICAgIGNsYXNzIEUxIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHt9OwogICAgY2xhc3MgRTIgOiBwdWJsaWMgc3RkOjpleGNlcHRpb24ge307CgogICAgaW50IG1haW4oKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdGhyb3cgRTIoKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goIC4uLiApIHsKICAgICAgICAJLy9EbyBsb3RzIG9mIGNvbXBsaWNhdGVkIHRoaW5ncyBoZXJlCiAgICAgICAgCS8vV2l0aG91dCB0aGUgbmVzdGluZywgYWxsIHRoZSBjb21wbGljYXRlZCB0aGluZ3Mgd291bGQgaGF2ZSB0byBiZSByZXBlYXRlZCB0d2ljZQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIGNvbnN0IEUxICYgZSApIHsKICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiRTFcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goIGNvbnN0IEUyICYgZSApIHsKICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiRTJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9