2013-02-06 49 views
1

我有一個應用程序,其中有大約100個不同類拋出FooException類型。有時候這些異常會被捕獲並處理,有時它們會被捕獲並冒泡以進行登錄。記錄所有發生的應用程序範圍內的異常類型

但是,我希望能夠將所有出現的FooException都發送到特殊的日誌文件,而不管最終如何處理異常。什麼是實施這個的方法?我可以以某種方式使用事件偵聽器模式嗎?

+1

插入日誌到'FooException'的構造函數中 –

+0

@MikhailVladimirov FooException是一個Java異常,而不是我們的。我可以在理論上編寫自己的異常類,並用新的異常類替換它的所有實例,但這對我來說並不理想 – smcg

+0

您可以編寫自己的'FooException'版本並創建classloader,它將用您的定製替換標準實現一。 –

回答

0

您可以捕獲所有FooException類型的異常,對它們進行特殊記錄並重新拋出它們。

try { 
    // throws exception 
} catch (AnotherException e) { 
    //handle this one 
} catch (FooException e) { 
    specialLog(e); 
    throw e; 
} catch (YetAnotherException e) { 
    // handle 
} 

你只對你想要冒泡的事件做這件事。

對於你已經處理的那些,只是做同樣的事情,但不要重新拋出。

相關問題