There’s a relevant gotw
http://gotw.ca/gotw/066.htm
Basically even if you don’t throw in your catch block, the exception will automatically be rethrown
If the handler body contained the statement “throw;” then the catch
block would obviously rethrow whatever exception A::A() or B::B() had
emitted. What’s less obvious, but clearly stated in the standard, is
that if the catch block does not throw (either rethrow the original
exception, or throw something new), and control reaches the end of the
catch block of a constructor or destructor, then the original
exception is automatically rethrown.