Java?超詳細講解Spring?MVC異常處理機制
更新時間:2022年04月06日 11:57:52 作者:求不脫發(fā)
Spring?MVC中提供了一個通用的異常處理機制,它提供了一個成熟、簡潔并且清晰的異常處理方案。當使用Spring?MVC開發(fā)Web應用時,利用這套現成的機制進行異常處理也更加自然并且高效
異常處理機制流程圖
系統中異常包括兩類:
| 預期異常 | 通過捕獲異常從而獲取異常信息。 |
| 運行時異常RuntimeException | 主要通過規(guī)范代碼開發(fā)、測試等手段減少運行時異常的發(fā)生。 |
系統的Dao、Service、Controller出現都通過throws Exception向上拋出,最后SpringMVC前端控制器交由異常處理器進行異常處理,如下圖:

異常處理的兩種方式
- 使用Spring MVC提供的簡單異常處理器SimpleMappingExceptionResolver。這種方式簡單快捷,使用方便。
- 實現Spring的異常處理接口HandlerExceptionResolver 自定義自己的異常處理器。這種方式可根據具體的項目需求,提示對應的異常信息。
簡單異常處理器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)建異常處理器類實現HandlerExceptionResolver
public class MyExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
//處理異常的代碼實現
//創(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>④ 測試異常跳轉
@RequestMapping("/quick")
@ResponseBody
public void quickMethod22() throws IOException, ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
simpleDateFormat.parse("123456");
}本章小結
異常處理方式
- 配置簡單異常處理器SimpleMappingExceptionResolver
- 自定義異常處理器
自定義異常處理步驟
① 創(chuàng)建異常處理器類實現HandlerExceptionResolver
② 配置異常處理器
③ 編寫異常頁面
④ 測試異常跳轉
到此這篇關于Java 超詳細講解Spring MVC異常處理機制的文章就介紹到這了,更多相關Java Spring MVC 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
探索Java中private方法添加@Transactional事務未生效原因
你又遇到過明明給private方法添加了@Transactional但是事務依然沒有生效的情況嗎,具體原因本篇文章將詳細告訴你,有需要的朋友跟著小編往下看吧2021-11-11

