如果我的IExceptionPublisher抛出异常会发生什么?

时间:2010-06-18 03:23:42

标签: c# exception exception-handling

我正在使用.NET Exception Management Application Block (EMAB).

作为其中的一部分,我正在实现IExceptionPublisher类。

但是,我想知道如果这些发布者遇到异常会发生什么。

我有点环顾四周,apparently他们打算做这样的事情:

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

Source

  

一个警告:如果有的话会发生什么   我们的自定义发布商中的例外   代码,阻止发布   MSMQ?为此,我们转向   ExceptionManager.PublishInternalException   方法,将发布   默认发布者的例外情况,   这是Windows应用程序事件   日志中。

但是,PublishInternalException受保护内部,所以我必须实现ExceptionManager而不是IExceptionPublisher才能访问它。

1 个答案:

答案 0 :(得分:0)

它处理自身,发布原始异常和您的IExceptionPublisher抛出到应用程序日志的异常

手动调用PublishInternalException的想法必须与早期测试版相关。当前的ExceptionManager将IExceptionPublisher调用包装在自己的try-catch中,该try-catch调用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 Exception Handling Application Block