#include class A { public: void throwIt() const; }; class B { public: void callA(const A& a) const; }; class X { private: const char* ptr; public: X(const char*); void print() const; }; int main(int argc, char** argv) { try { A a; B b; b.callA(a); } // catch(char x) // { // cout << "Char-Catch: " << x << endl; // } catch(...) { cout << "catch ..." << endl; } return 0; }; void A::throwIt() const { cout << "In A" << endl; throw 'a'; //throw; } void B::callA(const A& a) const { cout << "In B" << endl; a.throwIt(); } X::X(const char* x) : ptr(x) { cout << "X constructor" << endl; } void X::print() const { cout << this->ptr << endl; }