天天看點

REST(Jersey實作)統一異常機制

一:異常分類

 (1)Throwable類是所有異常的始祖,它有兩個直接子類Error / Exception: 

 Error僅在Java虛拟機中發生動态連接配接失敗或其它的定位失敗的時候抛出一個Error對象。一般程式不用捕捉或  抛出Error對象。 

(2)Unchecked Exception: 

a. 指的是程式的瑕疵或邏輯錯誤,并且在運作時無法恢複。 

b. 包括Error與RuntimeException及其子類,如:OutOfMemoryError, UndeclaredThrowableException, IllegalArgumentException, IllegalMonitorStateException, NullPointerException, IllegalStateException, IndexOutOfBoundsException等。 

c. 文法上不需要聲明抛出異常。 

(3)Checked Exception: 

a. 代表程式不能直接控制的無效外界情況(如使用者輸入,資料庫問題,網絡異常,檔案丢失等) 

b. 除了Error和RuntimeException及其子類之外,如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等。 

c. 需要try catch處理或throws聲明抛出異常。 

二:異常處理原則

1、在架構層面封裝checked exception,将其轉化為unchecked exception,避免開發過程中編寫繁冗的try...catch代碼。 

2、業務層面的開發,根據程式代碼職責定義不同的RuntimeException(它就是unchecked exception,一般定義為RuntimeException的子類) 

3、通過前兩個觀點,系統中自定義的異常将隻存在unchecked exception,系統隻在于用戶端交換資料的上層,設定統一異常處理機制,并将一些異常轉化為使用者所能了解的資訊傳達給使用者。 

4、其他如業務層,資料持久層,等底層隻負責将異常抛出即可,但要注意不要丢失掉異常堆棧(這一點是初學者容易犯的一個錯誤)。

三: jersey異常處理機制舉例

(1)在api所在包下,建立ExceptionMapperSupport統一異常處理器

REST(Jersey實作)統一異常機制

(2)自定義異常

異常父類;持久層異常;業務層異常

REST(Jersey實作)統一異常機制
REST(Jersey實作)統一異常機制
REST(Jersey實作)統一異常機制

(3)Dao層異常統一抛出PersistenceException

REST(Jersey實作)統一異常機制

(4)業務邏輯層Action抛出WebActionExceptionType

REST(Jersey實作)統一異常機制

(5):自定義異常友好提示

REST(Jersey實作)統一異常機制

(6):api調用,異常解析

REST(Jersey實作)統一異常機制

(7):異常提示效果

REST(Jersey實作)統一異常機制

繼續閱讀