Swallowing exception thrown in catch/finally block
I'm not a fan of catching and rethrowing an exception.
If you catch it, do something with it - even if it's just logging the exception.
If you can't do anything with it, don't catch it - add a throws clause to the method signature.
Catching an exception tells me that either you can deal with an exceptional situation and have a recovery plan or "the buck stops here" because an exception cannot propagate in that form any farther (e.g., no stack traces back to the user).
You can create a custom Exception
type that can hold both exceptions. If you overload the ToString()
, you can log both exceptions.
try
{
transaction.Commit();
}
catch(Exception initialException)
{
try
{
transaction.Rollback();
}
catch(Exception rollbackException)
{
throw new RollbackException(initialException, rollbackException);
}
throw;
}