Spring MVC 全局異常處理(1) --HandlerExceptionResolver

上一節(jié)小博老師給大家介紹了SpringMVC對異常處理的方法之一,使用默認(rèn)的SimpleMappingExceptionResolver實(shí)現(xiàn)類。我們知道SimpleMappingExceptionResolver類是接口HandlerExceptionResolver的實(shí)現(xiàn)類。所以,我們完全可以自定義一個異常解析類來處理異常信息。這一節(jié)我們就詳細(xì)了解一下HandlerExceptionResolver接口,以及如何自定義實(shí)現(xiàn)類。

先看一下HandlerExceptionResolver接口的源代碼:

接口定義很簡單,就一個resolveException方法。該方法用來處理Controller中的異常。Exception ex參數(shù)即Controller拋出的具體異常對象。返回值類型是ModelAndView,可以通過它設(shè)置異常時顯示的頁面。

接下來我們實(shí)現(xiàn)一個自己定義的異常處理類:

這段代碼的意思是,如果是IOException類型的異常跳轉(zhuǎn)到ioErrorPage頁面,如果是ClassNotFoundException類型的異常跳轉(zhuǎn)到notFoundPage頁面。當(dāng)然,我們還可以做更多的處理。比如發(fā)送email,保存異常到文件等等。相對于SimpleMappingExceptionResolver可以更加靈活的進(jìn)行判斷和處理。

當(dāng)然,還需要將自定義的BwfHandlerExceptionResolver實(shí)現(xiàn)類配置到Spring配置文件中。

注意:如果resolveException返回了ModelAndView,會優(yōu)先顯示返回值中的頁面。如果,resolveException返回null,并且在web.xml中配置了error-page的500狀態(tài)碼對應(yīng)的頁面,則會顯示該頁面。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容