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

3
我正在使用 .NET 异常管理应用程序块 (EMAB)
作为其中的一部分,我正在实现 IExceptionPublisher 类。
然而,我想知道如果这些发布者遇到异常会发生什么。
我稍微查了一下,显然 它们应该做这样的事情:
try 
{
    /* Normal Exception Publishing */
}
catch
{
    ExceptionManager.PublishInternalException(exception, additionalInfo);
}

来源:

需要注意的是:如果我们的自定义发布代码出现异常,阻止了消息发布到MSMQ会发生什么?为此,我们转向ExceptionManager.PublishInternalException方法,它将异常发布到默认发布器,即Windows应用程序事件日志。

然而,PublishInternalException既受保护是内部的,因此我必须实现ExceptionManager而不是IExceptionPublisher才能访问它。

1个回答

0

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

手动调用PublishInternalException的想法可能与早期测试版有关。当前的ExceptionManager在其自己的try-catch中包装了IExceptionPublisher调用,并调用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);
}

您可能还想查看更新的企业库异常处理应用程序块


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接