Does catch (…) work on throw; with no object?
What does C++ standard say should happen for the following code when there is no pending exception being processed higher up the stack? try { throw; } catch (...) { cerr << "Caught exception." << endl; } Will the throw with no object be caught or not? From the 2003 C++ Standard §15.1[except.throw]/8: If no exception is presently being handled, executing a throw-expression with no operand calls terminate() . So, in your example, since no exception is currently being handled, nothing is thrown and instead terminate() is called. Since terminate() does not return, your catch block will never be