Exception分為:Error和Exception(checkedException、uncheckedException)。在使用異常的時候可以先列出以下問題
Exception
|
Source
|
Scope
|
自定義異常名稱
|
會產生自定義異常的方法或事件
|
調用Source的方法或對象
|
我認為uncheckedException比checkedException要好,因為這樣可以減少代碼中try/catch語句,利用異常處理框架(或filter)來統一處理產生的異常。那uncheckedException與checkedException該如何劃分呢?checkedException用來處理可以預知的情況,例如已有針對返回值的不同情況,用If/else判斷。此時可以用checkedException提醒調用者對不同的情況做處理,要比調用者自己查源代碼然后做出相應的判斷要好。uncheckedException用于拋出的異常,一般情況下是不可預知的,會導致系統錯誤的。例如一個自定義的方法用來格式化日期,它需要一個日期型的字符串,可是偏偏系統傳了一個空的字段串,這種事很少發生的,所以不能拋出一個checkedException,不然會造成到處都是try/catch語句。此時uncheckedException就可以用了,在方法上加上@throws uncheckedException,調用者在不能確定自己傳入的參數是否合法時,看到方法throw異常,就需要try/catch一下了。(@throws用來說明的是uncheckedException)
在項目開發過程中,用XDoclet+Exception來約束調用者,效果會更好一些。