Don't let this example steer you toward catching general exceptions as the norm. This example is mainly to help provide some guidance on abstracting exception handling but not at the risk of generalizing exception management.
-The first step is to become familiar with Delegates in C# (if you are not already familiar).
-Next you will need to create a class with at least two methods that will serve as the Exception Manager. Each method will receive a Delegate, as a parameter, that points to the Routine that is being wrapped. The first method will only handle exceptions for Actions (nothing is returned by the Routine). The second method will handle exceptions for Functions (something is returned by the Routine)
-Finally you will need to wrap a Routine call using a Delegate pointer to that routine and pass it to either method in the Exception Manager class.
You can see the result in the following example. You can also download a code sample from my SkyDrive.
Before:
try
{
DoSomething();
}
catch(Exception ex)
{
//Handle Exception
}
finally
{
//Continue...
}
After:
ExceptionManager.ProcessFunc(() => DoSomething());