Java?超詳細(xì)講解Spring?MVC異常處理機(jī)制
異常處理機(jī)制流程圖
系統(tǒng)中異常包括兩類:
預(yù)期異常 | 通過(guò)捕獲異常從而獲取異常信息。 |
運(yùn)行時(shí)異常RuntimeException | 主要通過(guò)規(guī)范代碼開(kāi)發(fā)、測(cè)試等手段減少運(yùn)行時(shí)異常的發(fā)生。 |
系統(tǒng)的Dao、Service、Controller出現(xiàn)都通過(guò)throws Exception向上拋出,最后SpringMVC前端控制器交由異常處理器進(jìn)行異常處理,如下圖:
異常處理的兩種方式
- 使用Spring MVC提供的簡(jiǎn)單異常處理器SimpleMappingExceptionResolver。這種方式簡(jiǎn)單快捷,使用方便。
- 實(shí)現(xiàn)Spring的異常處理接口HandlerExceptionResolver 自定義自己的異常處理器。這種方式可根據(jù)具體的項(xiàng)目需求,提示對(duì)應(yīng)的異常信息。
簡(jiǎn)單異常處理器SimpleMappingExceptionResolver
<bean class=“org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”> <property name=“defaultErrorView” value=“error”/> <!-- 默認(rèn)錯(cuò)誤視圖--> <property name=“exceptionMappings”> <map> <!--異常類型 錯(cuò)誤視圖--> <entry key="com.project.exception.MyException" value="error"/> <entry key="java.lang.ClassCastException" value="error"/> </map> </property> </bean>
自定義異常處理步驟
① 創(chuàng)建異常處理器類實(shí)現(xiàn)HandlerExceptionResolver
public class MyExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { //處理異常的代碼實(shí)現(xiàn) //創(chuàng)建ModelAndView對(duì)象 ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("exceptionPage"); return modelAndView; } }
② 配置異常處理器
<bean id="exceptionResolver" class="com.project.exception.MyExceptionResolver"/>
③ 編寫異常頁(yè)面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>自定義異常界面</title> </head> <body> 自定義異常提示信息 </body> </html>
④ 測(cè)試異常跳轉(zhuǎn)
@RequestMapping("/quick") @ResponseBody public void quickMethod22() throws IOException, ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); simpleDateFormat.parse("123456"); }
本章小結(jié)
異常處理方式
- 配置簡(jiǎn)單異常處理器SimpleMappingExceptionResolver
- 自定義異常處理器
自定義異常處理步驟
① 創(chuàng)建異常處理器類實(shí)現(xiàn)HandlerExceptionResolver
② 配置異常處理器
③ 編寫異常頁(yè)面
④ 測(cè)試異常跳轉(zhuǎn)
到此這篇關(guān)于Java 超詳細(xì)講解Spring MVC異常處理機(jī)制的文章就介紹到這了,更多相關(guān)Java Spring MVC 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
網(wǎng)易Java程序員兩輪面試 請(qǐng)問(wèn)你能答對(duì)幾個(gè)?
為大家分享網(wǎng)易Java程序員兩輪面試題,考考大家,這些問(wèn)題你能答對(duì)幾個(gè)?2017-11-11使用Runnable實(shí)現(xiàn)數(shù)據(jù)共享
這篇文章主要為大家詳細(xì)介紹了如何使用Runnable實(shí)現(xiàn)數(shù)據(jù)共享,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07springboot使用shiro-整合redis作為緩存的操作
這篇文章主要介紹了springboot使用shiro-整合redis作為緩存的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06springboot 實(shí)現(xiàn)mqtt物聯(lián)網(wǎng)的示例代碼
這篇文章主要介紹了springboot 實(shí)現(xiàn)mqtt物聯(lián)網(wǎng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Java實(shí)現(xiàn)的文本字符串操作工具類實(shí)例【數(shù)據(jù)替換,加密解密操作】
這篇文章主要介紹了Java實(shí)現(xiàn)的文本字符串操作工具類,可實(shí)現(xiàn)數(shù)據(jù)替換、加密解密等操作,涉及java字符串遍歷、編碼轉(zhuǎn)換、替換等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10java的url方式、本地方式獲取json文件內(nèi)容
這篇文章給大家分享了java的url方式、本地方式獲取json文件內(nèi)容的實(shí)例代碼,有需要的朋友參考學(xué)習(xí)下。2018-07-07SpringBoot+Mybatis項(xiàng)目使用Redis做Mybatis的二級(jí)緩存的方法
本篇文章主要介紹了SpringBoot+Mybatis項(xiàng)目使用Redis做Mybatis的二級(jí)緩存的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12簡(jiǎn)單了解Mybatis如何實(shí)現(xiàn)SQL防注入
這篇文章主要介紹了簡(jiǎn)單了解Mybatis如何實(shí)現(xiàn)SQL防注入,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01