最近用到spring的AOP來實現(xiàn)異常攔截,用到了spring的ThrowsAdvice。ThrowsAdvice是一個標示接口,我們可以在類中定義一個或多個,來捕獲定義異常通知的bean拋出的異常,并在拋出異常前執(zhí)行相應的方法。
我想大家可能都在項目中有過這樣的需求,想在某種異常拋出時進行一些記錄操作,例如記錄錯誤日志到數(shù)據(jù)庫或日志文件中,但把這些代碼分布到項目各處不但難于管理,并且代碼量巨大,用Spring的AOP來實現(xiàn)攔截不失為一個比較好的方法。
下面,讓我們來感受一下它的魅力吧。
1. 操作類TestBean




































2. 錯誤日志攔截類ExceptionAdvisor









































































































運行ExceptionAdvisor類后,結(jié)果如下:
************************************
Error happened in class: TestBean
Error happened in method: method1
Exception class: java.lang.Exception
*************************************
*************************************
Error happened in class: TestBean
Error happened in method: changeToNumber
arg[0]: amigo
Exception class: java.lang.NumberFormatException
*************************************
在工程中,可將ExceptionAdvisor類作為bean定義,并指定要納入其進行異常攔截的類。