2012-02-22 130 views
0

以下庫代碼是否有問題?庫中的異常處理

try 
{ 
    // 
} 
catch (Exception ex) 
{ 
    CustomLogger.Log(ex.ToString()); //Write to log file 
    throw; 
} 

我看過的地方,異常處理是最好留給應用

+0

對庫編寫器的兩個請求:1.不要拋出基類異常。 2.記錄方法拋出的異常(至少比較常見)。 – TrueWill 2012-02-22 02:59:05

回答

5

一個框架實在不應該有自己的日誌記錄。它應該允許應用程序提供日誌記錄提供程序。

如果應用程序在這種情況下提供了日誌記錄提供程序,那麼實際的代碼將會正常(記錄異常,然後重新拋出)。否則,只需讓「應用程序異常」向上註冊以記錄它認爲合適的方式。

+0

還沒有聽說過日誌提供者。哪裏可以獲得更多信息? – blitzkriegz 2012-02-22 02:57:31

+0

@blitzkriegz - 這不一定是得到更多信息的東西。它可以像實現企業庫日誌記錄塊一樣複雜,就像在庫中有一個ILoggingProvider接口一樣,您需要調用者通過構造函數參數來實現和提供該接口。 – 2012-02-22 03:30:31

0

如果你堅持你可以讓API記錄程序的錯誤和狀態。這樣,通過查看日誌,您可以更輕鬆地調試API。最重要的是,您應該重新拋出異常,以便調用者知道錯誤並嘗試以有意義的方式處理它。如果您只是記錄而不是拋出,則調用者會感到困惑,或者可能需要查看日誌文件以進行更改,並從中推斷出異常。

我的觀點是,即使你記錄它,也要拋棄它。