I really wanted to say that this behavior is undefined.
The standard repeats many times that the lifetime of exception objects ends when the active handler completes differently than by repeatedly throwing an exception, i.e. saying throw; .
Since you are not throwing an exception, the original exception object expires at the end of the catch block, and you end up with a broken link, no different from throwing an object that contains a link to a local variable.
source share