Re-throw an exception inside catch block

Naruto Biju Mode picture Naruto Biju Mode · May 3, 2014 · Viewed 12k times · Source

Can anyone please confirm me if this information is correct or not:

In C++, inside catch block we can re-throw an exception using throw statement, but the thrown exception should have the same type as the current caught one.

Answer

dlf picture dlf · May 3, 2014

throw; all by itself in a catch block re-throws the exception that was just caught. This is useful if you need to (e.g.) perform some cleanup operation in response to an exception, but still allow it to propagate upstack to a place where it can be handled more fully:

catch(...)
{
   cleanup();
   throw;
}

But you are also perfectly free to do this:

catch(SomeException e)
{
   cleanup();
   throw SomeOtherException();
}

and in fact it's often convenient to do exactly that in order to translate exceptions thrown by code you call into into whatever types you document that you throw.