| Bruce Eckel's Thinking in C++, 2nd Ed | Contents | Prev | Next |
//: C23:Autoexcp.cpp
// No matching conversions
#include <iostream>
using namespace std;
class Except1 {};
class Except2 {
public:
Except2(Except1&) {}
};
void f() { throw Except1(); }
int main() {
try { f();
} catch (Except2) {
cout << "inside catch(Except2)" << endl;
} catch (Except1) {
cout << "inside catch(Except1)" << endl;
}
} ///:~ //: C23:Basexcpt.cpp
// Exception hierarchies
#include <iostream>
using namespace std;
class X {
public:
class Trouble {};
class Small : public Trouble {};
class Big : public Trouble {};
void f() { throw Big(); }
};
int main() {
X x;
try {
x.f();
} catch(X::Trouble) {
cout << "caught Trouble" << endl;
// Hidden by previous handler:
} catch(X::Small) {
cout << "caught Small Trouble" << endl;
} catch(X::Big) {
cout << "caught Big Trouble" << endl;
}
} ///:~