In the situation where no matching handler is found, it is
implementation-defined
whether or not the stack is unwound
before
std::terminate is invoked
. In the situation where the search for a handler (
[except.handle]) encounters the
outermost block of a function
with a non-throwing exception specification (
[except.spec]), it is
implementation-defined
whether the stack is unwound, unwound partially, or not unwound at all
before the function
std::terminate is invoked
. In all other situations, the stack shall not be unwound before
the function
std::terminate
is invoked
. An implementation is not permitted to finish stack unwinding
prematurely based on a determination that the unwind process
will eventually cause an invocation of the function
std::terminate.