An exception is considered uncaught
after completing the initialization of the exception object (
[except.throw])
until completing the activation of a handler for the exception (
[except.handle])
. This includes stack unwinding
. If an exception is rethrown (
[expr.throw],
[propagation]),
it is considered uncaught from the point of rethrow
until the rethrown exception is caught
. The function
std::uncaught_exceptions() (
[uncaught.exceptions])
returns the number of uncaught exceptions in the current thread
.