Что произойдет, если мой IExceptionPublisher выдает исключение? - PullRequest
3 голосов
/ 18 июня 2010

Я использую .NET блок управления исключениями. (EMAB).

В рамках этого я реализую классы IExceptionPublisher.

Однако мне интересно, что произойдет, если эти издатели столкнутся с исключением.

Я немного осмотрелся и очевидно они предназначены сделать что-то вроде этого:

try 
{
    /* Normal Exception Publishing */
}
catch
{
    ExceptionManager.PublishInternalException(exception, additionalInfo);
}

Источник

Одно предостережение: что произойдет, если есть исключение в нашем таможенном издателе код, препятствующий публикации MSMQ? Для этого мы обратимся к ExceptionManager.PublishInternalException метод, который опубликует исключение для издателя по умолчанию, который является событием приложения Windows журнал.

Однако PublishInternalException одновременно защищены и внутренними, поэтому для доступа к нему мне потребуется реализация ExceptionManager, а не IExceptionPublisher.

1 Ответ

0 голосов
/ 18 июня 2010

Он обрабатывает сам себя, публикуя как исходное исключение, так и исключение, которое ваш IExceptionPublisher выбросил в журнал приложений

Идея ручного вызова PublishInternalException должна была быть связана с ранней бета-версией.Текущий ExceptionManager упаковывает вызовы IExceptionPublisher в свою собственную попытку try, которая вызывает саму PublishInternalException.Если вы проверяете код в Reflector, он в основном делает это:

/* Foreach publisher */
Exception originalException;
try
{
    PublishToCustomPublisher(originalException, additionalInfo, current);
}
catch (Exception publisherException)
{
    /* Both of these calls use the DefaultPublisher which is the Application Log */
    PublishInternalException(publisherException, null);
    PublishToDefaultPublisher(originalException, additionalInfo);
}

Возможно, вы также захотите проверить более новый блок приложения для обработки исключений Enterprise Library

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...