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