In the most recent version (4.1, released October 2008) of The Microsoft Enterprise Library's Exception Handling Application Block, there are two HandleException() method signatures, and I am a bit lost on the intent for these, especially since neither the documentation, intellisense, nor the QuickStart apps intimate any meaningful difference.
Here are the two signatures:
bool HandleException(Exception exceptionToHandle, string policyName);
bool HandleException(Exception exceptionToHandle, string policyName, out Exception exceptionToThrow);
All of the examples I have found use the first, as in this example straight out of the XML documentation comments on the actual method:
try
{
Foo();
}
catch (Exception e)
{
if (ExceptionPolicy.HandleException(e, name)) throw;
}
And here, from the same source (the XML doc comments for the method), is an example of using the second:
try
{
Foo();
}
catch (Exception e)
{
Exception exceptionToThrow;
if (ExceptionPolicy.HandleException(e, name, out exceptionToThrow))
{
if(exceptionToThrow == null)
throw;
else
throw exceptionToThrow;
}
}
So, my question is, what does using the second one give you that the first does not? This should probably be obvious to me, but my head is a mess today and I don't really want to keep banging my head against the proverbial wall any longer. :)
No speculations, please; I hope to hear from someone that actually knows what they are talking about from experience using this.