#include class A { public: A () { printf ("A()\n"); } ~A () { printf ("~A()\n"); } }; class B : public A { public: B () { printf ("B()\n"); throw int(1); } ~B () { printf ("~B()\n"); } }; int main () { try { B b; } catch (...) { printf ("caught it!\n"); } return 0; }