SpringMVC基于配置的異常處理器
一、基于配置的異常處理
SpringMVC 提供了一個處理控制器方法執(zhí)行過程中所出現(xiàn)的異常的接口:HandlerExceptionResolver。
HandlerExceptionResolver接口的實現(xiàn)類有:
DefaultHandlerExceptionResolver,這個是默認使用的處理器,之前遇到的一些異常,其實springMVC 都已經(jīng)給我們處理過了。
SimpleMappingExceptionResolver,這個可以讓我們自定義異常處理。當出現(xiàn)指定的異常,可以設置返回新的視圖。
使用SimpleMappingExceptionResolver,在springMVC的配置文件中:
<!--配置異常處理-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
</bean>示例里使用的一個處理運算異常的類ArithmeticException,里面的值 error 表示異常后跳轉(zhuǎn)的視圖。
對應的,新建一個error.html頁:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>error</title>
</head>
<body>
出現(xiàn)錯誤
</body>
</html>接下來,造一個異常:
@RequestMapping("/testExceptionHandler")
public String testExceptionHandler() {
System.out.println(1/0);
return "success";
}正常情況下這個處理器會跳轉(zhuǎn)到 success 頁,但是里面有個 1/0的異常,所以會按照配置跳轉(zhuǎn)到 error 頁。
重新部署,測試一下,訪問http://localhost:8080/springmvc/testExceptionHandler:

成功跳轉(zhuǎn)到 error 頁。
儲存異常信息
此外,還可以繼續(xù)屬性exceptionAttribute,設置一個key用來存放異常信息,默認存在當前的請求域中:
<!--配置異常處理-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!--exceptionAttribute屬性設置一個屬性名,將出現(xiàn)的異常信息在請求域中進行共享-->
<property name="exceptionAttribute" value="ex"></property>
</bean>那么在 error 頁中就可以使用到ex來獲取異常信息了。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>error</title>
</head>
<body>
出現(xiàn)錯誤
<p th:text="${ex}"></p>
</body>
</html>重新部署,刷新下頁面:

二、基于注解的異常處理
springmvc 同樣也提供了一套注解,通過注解方式也可以實現(xiàn)上述的異常處理。
新建一個控制器 ExceptionController:
//@ControllerAdvice將當前類標識為異常處理的組件
@ControllerAdvice
public class ExceptionController {
//@ExceptionHandler 用于設置所標識方法處理的異常
@ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class})
public String testException(Exception ex, Model model){
// ex表示當前請求處理中出現(xiàn)的異常對象,放到請求域中
model.addAttribute("ex", ex);
return "error";
}
}@ControllerAdvice將當前類標識為異常處理的組件。
ex表示當前請求處理中出現(xiàn)的異常對象,用Model放到請求域中。
現(xiàn)在注釋掉配置文件里的處理器,重新部署下,刷新http://localhost:8080/springmvc/testExceptionHandler:

依然可以。
以上就是SpringMVC基于配置的異常處理器的詳細內(nèi)容,更多關于SpringMVC異常處理器的資料請關注腳本之家其它相關文章!
相關文章
Spring中@ControllerAdvice注解的用法解析
這篇文章主要介紹了Spring中@ControllerAdvice注解的用法解析,顧名思義,@ControllerAdvice就是@Controller 的增強版,@ControllerAdvice主要用來處理全局數(shù)據(jù),一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用,需要的朋友可以參考下2023-10-10
Triple協(xié)議支持Java異?;貍髟O計實現(xiàn)詳解
這篇文章主要為大家介紹了Triple協(xié)議支持Java異?;貍髟O計實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
金三銀四復工高頻面試題java算法LeetCode396旋轉(zhuǎn)函數(shù)
這篇文章主要為大家介紹了金三銀四復工高頻面試題之java算法題解LeetCode396旋轉(zhuǎn)函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02

