В самой последней версии (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;
}
}
Итак, мой вопрос: что дает вам использование второго, чего не дает первый? Наверное, это должно быть очевидно для меня, но сегодня у меня в голове полный бардак, и я действительно не хочу больше биться головой о пресловутую стену. :)
Никаких предположений, пожалуйста; Я надеюсь услышать от кого-то, кто действительно знает, о чем они говорят, из опыта использования этого.