天天看點

Java 應用異常使用簡單原則

定義異常:

盡量給自己應用量身定制一套異常類,反應各種不同的錯誤,以便建構統一的、健壯的API。

應用每層定義統一的接口異常類,而不是簡單抛出來自實作遇到的異常,否則實作一經改變,原來的異常可能會變化,接口可能也需要跟着更改。 

給每個異常和錯誤定義統一的辨別,如錯誤碼,友善根據錯誤碼找到詳細的錯誤資訊以及支援國際化,友善統一的異常處理架構。

抛出異常:

如果一個異常是緻命的,不可恢複的,或者調用者去捕獲它沒有任何益處,使用unChecked異常。

如果一個異常是可以恢複的,可以被調用者正确處理的,使用checked異常。

在使用unChecked異常時,必須在在方法聲明中詳細的說明該方法可能會抛出的unChekced異常,由調用者自己去決定是否捕獲unChecked異常

異常資訊中精确描述何種操作導緻失敗(如果有,最好包括參數資料),以及可能的恢複或者處理方法。 

記錄異常:

異常應該在最初産生的位置記錄!

如果必須捕獲一個無法正确處理的異常,僅僅是把它封裝成另外一種異常往上抛出,不必再次把已經被記錄過的異常再次記錄。

如果捕獲到一個異常,但是這個異常是可以處理的,則無需要記錄異常

捕獲到一個未記錄過的異常或外部系統異常時,應該記錄異常的詳細資訊

給應用定義統一的異常記錄類,增加額外的應用資訊到異常日志。

處理異常:

異常捕獲時由子類到父類過濾逐級分開處理。

try{..}塊最好隻包含可能抛出異常的語句,語句越少越好。

調用的函數可能抛出unchecked異常時,即使不捕獲異常,也應該注意使用try{...}finally{...}釋放該釋放的資源;相對checked異常,我們都記得用try{...}catch{...}finally{...}。

     本文轉自sarchitect 51CTO部落格,原文連結:http://blog.51cto.com/stevex/1093794,如需轉載請自行聯系原作者