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