Using `throw;` on a modified exception

Actually, the standard is very precise here. [except.handle]/17:

When the handler declares a reference to a non-constant object, any
changes to the referenced object are changes to the temporary object
initialized when the throw-expression was executed and will have
effect should that object be rethrown
.

And [except.throw]/8:

A throw-expression with no operand rethrows the currently handled
exception (15.3).

Leave a Comment