How to determine whether a .NET exception is being handled?
Posted
by romkyns
on Stack Overflow
See other posts from Stack Overflow
or by romkyns
Published on 2009-11-29T13:04:01Z
Indexed on
2010/03/25
19:13 UTC
Read the original article
Hit count: 308
We're investigating a coding pattern in C# in which we'd like to use a "using" clause with a special class, whose Dispose()
method does different things depending on whether the "using" body was exited normally or with an exception.
To the best of my understanding, the CLR keeps track of the current exception being handled until it's been consumed by a "catch" handler. However it's not entirely clear whether this information is exposed in any way for the code to access. Do you know whether it is, and if so, how to access it?
For example:
using (var x = new MyObject())
{
x.DoSomething();
x.DoMoreThings();
}
class MyObject : IDisposable
{
public void Dispose()
{
if (ExceptionIsBeingHandled)
Rollback();
else
Commit();
}
}
This looks almost like System.Transactions.TransactionScope
, except that success/failure is not determined by a call to x.Complete()
, but rather based on whether the using
body was exited normally.
© Stack Overflow or respective owner