2010-06-18 164 views
3

我使用的是.NET Exception Management Application Block (EMAB).如果我的IExceptionPublisher引發異常,會發生什麼情況?

作爲這個的一部分,我實現了IExceptionPublisher類。

但是,我想知道如果這些發佈者遇到異常會發生什麼。

我有一點看的周圍,apparently他們是爲了做這樣的事情:

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

Source

一個警告:如果有 在出現異常時會發生什麼我們的自定義發佈者 的代碼,阻止發佈到 MSMQ?爲此,我們轉向 ExceptionManager.PublishInternalException 方法,該方法將向默認發佈者 發佈 例外,該例外是Windows應用程序事件 日誌。

然而,PublishInternalException既保護內部,所以我將不得不實施ExceptionManager,不IExceptionPublisher,對其進行訪問。

回答

0

它處理本身,都發布了原來的異常和你IExceptionPublisher扔應用程序日誌

的想法手動調用PublishInternalException必須已涉及到早期測試異常。當前的ExceptionManager將IExceptionPublisher調用封裝在自己的try-catch中,它調用PublishInternalException本身。如果您在反射檢查出的代碼,它基本上做到這一點:

/* 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

相關問題