In the IDisposable.Dispose
method is there a way to figure out if an exception is being thrown?
using (MyWrapper wrapper = new MyWrapper())
{
throw new Exception("Bad error.");
}
If an exception is thrown in the using
statement I want to know about it when the IDisposable
object is disposed.
You can extend IDisposable
with method Complete
and use pattern like that:
using (MyWrapper wrapper = new MyWrapper())
{
throw new Exception("Bad error.");
wrapper.Complete();
}
If an exception is thrown inside the using
statement Complete
will not be called before Dispose
.
If you want to know what exact exception is thrown, then subscribe on AppDomain.CurrentDomain.FirstChanceException
event and store last thrown exception in ThreadLocal<Exception>
variable.
Such pattern implemented in TransactionScope
class.