1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
// bad_exception example
#include <iostream> // std::cerr
#include <exception> // std::bad_exception, std::set_unexpected
void myunexpected () {
std::cerr << "unexpected handler called\n";
throw;
}
void myfunction () throw (int,std::bad_exception) {
throw 'x'; // throws char (not in exception-specification)
}
int main (void) {
std::set_unexpected (myunexpected);
try {
myfunction();
}
catch (int) { std::cerr << "caught int\n"; }
catch (std::bad_exception be) { std::cerr << "caught bad_exception\n"; }
catch (...) { std::cerr << "caught some other exception\n"; }
return 0;
}
|