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.
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.