В самой последней версии (4.1, выпущенной в октябре 2008 г.) блока приложения для обработки исключений в Microsoft Enterprise Library есть две сигнатуры метода HandleException (), и я немного растерялся по этому поводу, тем более документация, intellisense, а также приложения QuickStart не дают ощутимых отличий.
Вот две подписи:
bool HandleException(Exception exceptionToHandle, string policyName);
bool HandleException(Exception exceptionToHandle, string policyName, out Exception exceptionToThrow);
Все примеры, которые я нашел, используют первый, как в этом примере, прямо из комментариев к документации XML по фактическому методу:
try
{
Foo();
}
catch (Exception e)
{
if (ExceptionPolicy.HandleException(e, name)) throw;
}
И здесь, из того же источника (комментарии к документу XML для метода), приведен пример использования второго:
try
{
Foo();
}
catch (Exception e)
{
Exception exceptionToThrow;
if (ExceptionPolicy.HandleException(e, name, out exceptionToThrow))
{
if(exceptionToThrow == null)
throw;
else
throw exceptionToThrow;
}
}
Итак, мой вопрос: что дает использование второго, что дает первое? Это должно быть очевидно для меня, но моя голова сегодня беспорядок, и я действительно не хочу больше биться головой о стену пословиц. :)
Никаких спекуляций, пожалуйста; Я надеюсь услышать от кого-то, кто действительно знает, о чем они говорят, из опыта использования этого.