13.1、環境搭建 創建名為spring_mvc_exception的新module,過程參考9.1節和9.5節 13.1.1、創建錯誤提示頁 <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <m ...
13.1、環境搭建
創建名為spring_mvc_exception的新module,過程參考9.1節和9.5節
13.1.1、創建錯誤提示頁
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>錯誤頁面</title>
</head>
<body>
<h1>errorPage.html</h1>
</body>
</html>
13.1.2、創建會發生異常的控制器方法
package online.liaojy.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author liaojy
* @date 2023/11/13 - 19:48
*/
@Controller
public class TestController {
@RequestMapping("/test/hello")
public String testHello(){
// 在控制器方法中,製造一個數值運算異常
System.out.println(1/0);
return "success";
}
}
13.2、異常處理器概述
-
SpringMVC 提供了一個處理控制器方法執行異常的介面:HandlerExceptionResolver
-
HandlerExceptionResolver 介面的實現類有:DefaultHandlerExceptionResolver 和 SimpleMappingExceptionResolver
-
實際工作中,有時使用 SimpleMappingExceptionResolver 異常處理器,來對控制器方法出現的異常進行自定義異常處理
13.3、使用xml配置異常處理器
13.3.1、基本配置示例
<!--配置異常處理-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!--設置異常和錯誤提示頁面的映射關係-->
<property name="exceptionMappings">
<props>
<!--
屬性key:用來設置要處理的(在控制器方法執行過程中可能出現的)異常的全類名
<prop>標簽體:用來設置當(控制器方法執行)發生異常時,要跳轉到的邏輯視圖
-->
<prop key="java.lang.ArithmeticException">errorPage</prop>
</props>
</property>
</bean>
13.3.2、基本示例測試效果
13.3.3、進階配置示例
<!--屬性value:設置共用到域對象中的異常信息的屬性名-->
<property name="exceptionAttribute" value="exceptionMessage"></property>
異常信息:<p th:text="${exceptionMessage}"></p>
13.3.4、進階示例測試效果
13.4、使用註解配置異常處理器
13.4.1、創建異常處理組件
package online.liaojy.controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
/**
* @author liaojy
* @date 2023/11/13 - 20:42
*/
// @ControllerAdvice 註解:用於將當前類標識為異常處理的組件
@ControllerAdvice
public class ExceptionController {
// @ExceptionHandler 註解:用來設置(該方法)要處理的異常
@ExceptionHandler(ArithmeticException.class)
public String testHandleException(Throwable ex,Model model){
// 設置共用到請求域中的異常信息的屬性名
model.addAttribute("exceptionMessage",ex);
// 返回發生異常時的邏輯視圖
return "errorPage";
}
}
13.4.2、測試效果
本文來自博客園,作者:Javaer1995,轉載請註明原文鏈接:https://www.cnblogs.com/Javaer1995/p/17824364.html