Posted on 2005-11-18 10:27
publisher luo 閱讀(1845)
評論(2) 編輯 收藏 所屬分類:
框架設(shè)計及應(yīng)用
Java提供了兩類主要的異常:runtime
exception和checked exception。所有的checked exception是從java.lang.Exception類衍生出來的,而runtime exception則是從Java.lang.RuntimeException或java.lang.Error類衍生出來的。
從邏輯的角度來說,checked exceptions和runtime
exception是有不同的使用目的的。checked exception用來指示一種調(diào)用方能夠直接處理的異常情況。而runtime exception則用來指示一種調(diào)用方本身無法處理或恢復(fù)的程序錯誤。
框架定義了一個異常基類ApplicationException是屬于checked
exceptions類型主要有以下幾個功能:
1、
異常自底向上拋出統(tǒng)一處理,減少處理代碼:
傳統(tǒng)(過程式)方式編程,采用返回參數(shù)告訴調(diào)用的函數(shù)被調(diào)用的函數(shù)出現(xiàn)錯誤,所以在調(diào)用函數(shù)里面要加入很多的if從句來判斷各個被調(diào)用函數(shù)是否正確返回值,代碼充斥了大量的大括號。采用異常機(jī)制,發(fā)生異常的位置包裝成自定義的應(yīng)用異常然后向上拋出,上面的各層均不用處理直接拋出到統(tǒng)一異常處理的MainController里面即可,由統(tǒng)一的類來處理
2、
異常統(tǒng)一編號,用戶看到統(tǒng)一的處理信息:
每個異常都可以確定編號,并將編號與提示信息維護(hù)在數(shù)據(jù)庫中,頁面只顯示統(tǒng)一維護(hù)的錯誤信息,這樣就不會讓錯誤信息編程開發(fā)人員隨手寫的不規(guī)范而且難以理解的信息,造成用戶感覺系統(tǒng)難以使用。
3、
異常信息記錄到錯誤日志中方便追蹤異常位置:
統(tǒng)一處理程序抓取異常,并將異常信息記錄日志。調(diào)試階段還可以在控制臺信息中打出異常堆,方便開發(fā)人員快速定位異常發(fā)生位置。
4、
根據(jù)獲取異常AOP聲明式事務(wù)控制進(jìn)行回滾操作:
整個開發(fā)使用聲明式的事務(wù),何時回滾就取決與應(yīng)用異常的拋出。
配置如下:
<property
name="transactionAttributes">
<props>
<prop
key="insert*">
PROPAGATION_REQUIRED,-ApplicationException
</prop>
</props>
</property>
|
應(yīng)用異常基類如下圖:

其它異常都繼承于基類ApplicationException,主要包含錯誤編號屬性(errorNumber)、異常信息(errorMessage)、異常跟蹤(stackTrace)。以便實現(xiàn)上述功能。