65.9K
CodeProject is changing. Read more.
Home

Try - finally alternative

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Jun 5, 2011

CPOL
viewsIcon

5751

There are times when "try"-related wrappers can be useful. For example, a Try() wrapper DLL written in a language other than C# could pass an Exception parameter to the Finally clause indicating whether the Try clause succeeded. For example:Try (() => {DoSomething();}, (Exception inner_ex)...

There are times when "try"-related wrappers can be useful. For example, a Try() wrapper DLL written in a language other than C# could pass an Exception parameter to the Finally clause indicating whether the Try clause succeeded. For example:
Try (() => {DoSomething();}, (Exception inner_ex) =>
{
    try
    {
      DoCleanup();
    }
    catch Exception ex
    {
      throw new CleanupException(outer_ex, ex);
    }
}
Note that an exception that occurs during cleanup will be made available up the calling stack, but the calling code will also be able to access the exception (if any) which prompted the cleanup in the first place.