//: C01:Autoexcp.cpp // No matching conversions. #include <iostream> using namespace std; class Except1 {}; class Except2 { public: Except2(const Except1&) {} }; void f() { throw Except1(); } int main() { try { f(); } catch(Except2&) { cout << "inside catch(Except2)" << endl; } catch(Except1&) { cout << "inside catch(Except1)" << endl; } } ///:~
Listado 2.4. C01/Autoexcp.cpp
//: C01: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; } } ///:~
Listado 2.5. C01/Basexcpt.cpp