Java?超詳細(xì)講解Spring?MVC異常處理機(jī)制
異常處理機(jī)制流程圖
系統(tǒng)中異常包括兩類:
| 預(yù)期異常 | 通過捕獲異常從而獲取異常信息。 |
| 運(yùn)行時(shí)異常RuntimeException | 主要通過規(guī)范代碼開發(fā)、測試等手段減少運(yùn)行時(shí)異常的發(fā)生。 |
系統(tǒng)的Dao、Service、Controller出現(xiàn)都通過throws Exception向上拋出,最后SpringMVC前端控制器交由異常處理器進(jìn)行異常處理,如下圖:

異常處理的兩種方式
- 使用Spring MVC提供的簡單異常處理器SimpleMappingExceptionResolver。這種方式簡單快捷,使用方便。
- 實(shí)現(xiàn)Spring的異常處理接口HandlerExceptionResolver 自定義自己的異常處理器。這種方式可根據(jù)具體的項(xiàng)目需求,提示對(duì)應(yīng)的異常信息。
簡單異常處理器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"/>
③ 編寫異常頁面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>自定義異常界面</title>
</head>
<body>
自定義異常提示信息
</body>
</html>④ 測試異常跳轉(zhuǎn)
@RequestMapping("/quick")
@ResponseBody
public void quickMethod22() throws IOException, ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
simpleDateFormat.parse("123456");
}本章小結(jié)
異常處理方式
- 配置簡單異常處理器SimpleMappingExceptionResolver
- 自定義異常處理器
自定義異常處理步驟
① 創(chuàng)建異常處理器類實(shí)現(xiàn)HandlerExceptionResolver
② 配置異常處理器
③ 編寫異常頁面
④ 測試異常跳轉(zhuǎn)
到此這篇關(guān)于Java 超詳細(xì)講解Spring MVC異常處理機(jī)制的文章就介紹到這了,更多相關(guān)Java Spring MVC 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
探索Java中private方法添加@Transactional事務(wù)未生效原因
你又遇到過明明給private方法添加了@Transactional但是事務(wù)依然沒有生效的情況嗎,具體原因本篇文章將詳細(xì)告訴你,有需要的朋友跟著小編往下看吧2021-11-11
看過就懂的java零拷貝及實(shí)現(xiàn)方式詳解
這篇文章主要為大家詳細(xì)的介紹了什么是零拷貝,傳統(tǒng)的IO執(zhí)行流程,零拷貝相關(guān)的知識(shí)點(diǎn)回顧,零拷貝實(shí)現(xiàn)的幾種方式及java提供的零拷貝方式相關(guān)內(nèi)容,有需要的朋友可以借鑒參考下2022-01-01
Java字節(jié)碼操縱框架ASM圖文實(shí)例詳解
這篇文章主要為大家介紹了Java字節(jié)碼操縱框架ASM圖文實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
JavaWeb項(xiàng)目實(shí)戰(zhàn)之表白墻和在線相冊
這篇文章主要給大家介紹了關(guān)于JavaWeb項(xiàng)目實(shí)戰(zhàn)之表白墻和在線相冊的相關(guān)資料,JavaWeb表白墻是一款基于JavaWeb技術(shù)開發(fā)的表白墻應(yīng)用,用戶可以在上面發(fā)布表白信息,也可以查看其他用戶的表白信息,需要的朋友可以參考下2023-03-03

