#include <iostream>
class ExceptionBase {
};
class MyException : public ExceptionBase {
};
int main()
{
try
{
throw ExceptionBase();
}
catch (MyException const& e) {
std::cout<<"catch 1"<<std::endl;
}
catch (ExceptionBase const& e) {
std::cout<<"should not catch 1"<<std::endl;
}
////////
try
{
throw MyException();
}
catch (ExceptionBase const& e) {
std::cout<<"catch 2"<<std::endl;
}
catch (...) {
std::cout<<"should not catch 2"<<std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgRXhjZXB0aW9uQmFzZSB7Cn07CgpjbGFzcyBNeUV4Y2VwdGlvbiA6IHB1YmxpYyBFeGNlcHRpb25CYXNlIHsKfTsKCmludCBtYWluKCkKewoJdHJ5Cgl7CgkJdGhyb3cgRXhjZXB0aW9uQmFzZSgpOwoJfQoJY2F0Y2ggKE15RXhjZXB0aW9uIGNvbnN0JiBlKSB7CgkJc3RkOjpjb3V0PDwiY2F0Y2ggMSI8PHN0ZDo6ZW5kbDsKCX0KCWNhdGNoIChFeGNlcHRpb25CYXNlIGNvbnN0JiBlKSB7CgkJc3RkOjpjb3V0PDwic2hvdWxkIG5vdCBjYXRjaCAxIjw8c3RkOjplbmRsOwoJfQoJCgkvLy8vLy8vLwoJdHJ5Cgl7CgkJdGhyb3cgTXlFeGNlcHRpb24oKTsKCX0KCWNhdGNoIChFeGNlcHRpb25CYXNlIGNvbnN0JiBlKSB7CgkJc3RkOjpjb3V0PDwiY2F0Y2ggMiI8PHN0ZDo6ZW5kbDsKCX0KCWNhdGNoICguLi4pIHsKCQlzdGQ6OmNvdXQ8PCJzaG91bGQgbm90IGNhdGNoIDIiPDxzdGQ6OmVuZGw7Cgl9CgoJcmV0dXJuIDA7Cn0=