Java SpringMVC的自定義異常類
1. 異常處理的思路
在java中,對于異常的處理一般有兩種方式:
- 一種在當(dāng)前方法捕獲處理(
try-catch
),這種處理方式會造成業(yè)務(wù)代碼和異常處理代碼的耦合。 - 另一種是自己不處理,而是拋給調(diào)用者處理(
throws
),調(diào)用者在拋給它的調(diào)用者,也就是往上拋。這種方法的基礎(chǔ)上,衍生除了SpringMVC的異常處理機制。
系統(tǒng)的dao
、service
、controller
出現(xiàn)都通過throws Exception
向上拋出,最后由springmvc前端控制器交由異常處理器進行異常處理,如下圖:
2. 自定義異常處理器
步驟分析:
1.創(chuàng)建異常處理器類實現(xiàn)handlerExceptionResolver
2.配置異常處理器
3.編寫異常頁面
4.測試異常跳轉(zhuǎn)
(1)創(chuàng)建異常處理器類實現(xiàn)handlerExceptionResolver
public class GlobalExeceptionResovler implements HandlerExceptionResolver { /** * * @param httpServletRequest * @param httpServletResponse * @param o:對應(yīng)的處理器 * @param e;實際拋出的異常對象 * @return */ @Override public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) { ModelAndView model = new ModelAndView(); //具體的異常處理 產(chǎn)生異常后,跳轉(zhuǎn)到一個最終的異常頁面 model.addObject("error",e.getMessage());//得到錯誤信息 model.setViewName("error"); return model; } }
(2)在Spring的配置文件配置異常處理器
<!-- 定義錯誤異常頁面--> <bean id="globalExecptionResovler" class="com.weihong.excption.GlobalExeceptionResovler"/>
(3)編寫異常頁面
<html> <head> <title>Title</title> </head> <body> <h2>這是一個錯誤頁面</h2> <h5>錯誤信息為:${error}</h5> </body> </html>
(4)測試異常跳轉(zhuǎn)
@RequestMapping("/jumpErrorPage") public String jumpErrorPage(){ int res = 10 / 0; return "success"; }
(5)測試結(jié)果
3. web的處理異常機制
- 當(dāng)請求狀態(tài)為404或者500,指定頁面跳轉(zhuǎn)。
- 在其web.xml配置如下:
<!--處理500異常--> <error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <!--處理404異常--> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page>
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
SpringMVC中解決@ResponseBody注解返回中文亂碼問題
這篇文章主要介紹了SpringMVC中解決@ResponseBody注解返回中文亂碼問題, 小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04Java常用正則表達式驗證工具類RegexUtils.java
相信大家對正則表達式一定都有所了解和研究,這篇文章主要為大家分享了Java 表單注冊常用正則表達式驗證工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11java servlet手機app訪問接口(三)高德地圖云存儲及檢索
這篇文章主要為大家詳細介紹了java servlet手機app訪問接口(三),高德地圖云存儲及檢索,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12Java內(nèi)部類_動力節(jié)點Java學(xué)院整理
內(nèi)部類是指在一個外部類的內(nèi)部再定義一個類。下面通過本文給大家java內(nèi)部類的使用小結(jié),需要的朋友參考下吧2017-04-04