首頁 > 軟體

Java 超詳細講解Spring MVC例外處理機制

2022-04-06 16:00:37

例外處理機制流程圖

系統中異常包括兩類:

預期異常通過捕獲異常從而獲取異常資訊。
執行時異常RuntimeException主要通過規範程式碼開發、測試等手段減少執行時異常的發生。

系統的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>

自定義例外處理步驟

① 建立例外處理器類實現HandlerExceptionResolver

public class MyExceptionResolver implements HandlerExceptionResolver {
@Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        //處理異常的程式碼實現
        //建立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
  • 自定義例外處理器

自定義例外處理步驟

① 建立例外處理器類實現HandlerExceptionResolver

② 設定例外處理器

③ 編寫異常頁面

④ 測試異常跳轉

到此這篇關於Java 超詳細講解Spring MVC例外處理機制的文章就介紹到這了,更多相關Java Spring MVC 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com