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

異常處理的兩種方式
- 使用Spring MVC提供的簡單異常處理器SimpleMappingExceptionResolver。這種方式簡單快捷,使用方便。
- 實現(xiàn)Spring的異常處理接口HandlerExceptionResolver 自定義自己的異常處理器。這種方式可根據(jù)具體的項目需求,提示對應(yīng)的異常信息。
簡單異常處理器SimpleMappingExceptionResolver
<bean
class=“org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”>
<property name=“defaultErrorView” value=“error”/> <!-- 默認錯誤視圖-->
<property name=“exceptionMappings”>
<map> <!--異常類型 錯誤視圖-->
<entry key="com.project.exception.MyException" value="error"/>
<entry key="java.lang.ClassCastException" value="error"/>
</map>
</property>
</bean>自定義異常處理步驟
① 創(chuàng)建異常處理器類實現(xiàn)HandlerExceptionResolver
public class MyExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
//處理異常的代碼實現(xiàn)
//創(chuàng)建ModelAndView對象
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)建異常處理器類實現(xiàn)HandlerExceptionResolver
② 配置異常處理器
③ 編寫異常頁面
④ 測試異常跳轉(zhuǎn)
到此這篇關(guān)于Java 超詳細講解Spring MVC異常處理機制的文章就介紹到這了,更多相關(guān)Java Spring MVC 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
探索Java中private方法添加@Transactional事務(wù)未生效原因
你又遇到過明明給private方法添加了@Transactional但是事務(wù)依然沒有生效的情況嗎,具體原因本篇文章將詳細告訴你,有需要的朋友跟著小編往下看吧2021-11-11

