系統的異常處理機制是衡量一個系統設計的關鍵因素,良好的異常處理機制能在系統出現異常時準確的找到問題的所在。
spring aop對異常的處理有良好的支持。spring 提供了一個接口 ThrowsAdvice,該接口裏面沒有任何方法,但是實現類裏面必須的實現
afterThrowing(Method method, Object[] args, Object target, RuntimeException throwable) 或者
afterThrowing(RuntimeException throwable)
如果需要記錄發生異常方法的詳細信息,則實現第一個方法就行,如果只記錄發生的異常,實現第二個方法就ok!
那麼異常的處理應該在什麼位置來做處理呢?
一般我們的系統都應該有以下幾個層次:Action--->Service---->DAO
DAO負責直接和數據庫打交道,也是發生異常頻率較高的地方,而service只是調用DAO所提供給外面的接口,action裏面大部分的操作也是調用service的服務,再加上少數其他的邏輯,這部分的異常可以單獨處理!下面我們主要關心DAO層的異常處理。
1、定義接口
2、實現
這裏需要說明的是,這裏的異常我沒有細緻的分類,都是throws Exception。
service層的代碼就省略了,因爲只是調用DAO層的方法,下面來寫異常的攔截
最後當然就是在配置文件裏面配置了
到此,通過spring AOP攔截異常就完成了,這裏只是攔截DAO層的異常,此方法的好處就是處理異常和功能實現完全分離開,只需要在寫方法的時候要記得拋出相應的異常,當出現異常時ThrowsAdvice就會攔截到該異常,並獲取該異常的詳細信息。