//: C07:Basexcpt.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt // Exception hierarchies #include 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; } } ///:~