Spring?MVC項目中的異常處理詳解
前言
我們在項目的開發(fā)中,難免會遇到各種可預知的、不可預知的異常需要處理。每個過程都單獨處理異常,系統(tǒng)的代碼耦合度高,工作量大且不好統(tǒng)一,維護的工作量也很大。
那么,能不能將所有類型的異常處理從各處理過程解耦出來,這樣既保證了相關處理過程的 功能較單一,也實現(xiàn)了異常信息的統(tǒng)一處理和維護?答案是肯定的。下面將介紹Spring MVC是如何處理異常的。
1. 基于配置的簡單異常處理
在SpringMVC中擁有一套非常強大的異常處理機制,SpringMVC通過 HandlerExceptionResolver處理程序的異常,包括請求映射,數(shù)據(jù)綁定以及目標方法的執(zhí)行時發(fā)生的異常。

SpringMVC提供了一個處理控制器方法執(zhí)行過程中所出現(xiàn)的異常的接口:
HandlerExceptionResolver,該接口的實現(xiàn)類有:DefaultHandlerExceptionResolver和
SimpleMappingExceptionResolver,下面就來看看如何使用簡單異常處理器來處理異常。
使用 Spring MVC 提供的簡單異常處理器 SimpleMappingExceptionResolver
Spring MVC配置文件
<!--配置異常處理器-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!--ArithmeticException算術運算異常:是出現(xiàn)異常的運算條件時,拋出此異常-->
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<property name="exceptionAttribute" value="e"/>
</bean>
注意:
properties的鍵表示處理器方法執(zhí)行過程中出現(xiàn)的異常
properties的值表示若出現(xiàn)指定異常時,設置一個新的視圖名稱,跳轉到指定頁面
exceptionAttribute屬性設置一個屬性名,將出現(xiàn)的異常信息在請求域中進行共享
控制器方法
@RequestMapping("/testException")
public String testException(){
System.out.println(1/0);
return "success";
}
在該控制器方法中拋出一個算術運算異常,運行

2. 基于注解的全局異常處理
@ControllerAdvice:將當前類標識為異常處理的組件,是Spring提供的新注解,它是對Controller的增強,可對 controller中被 @RequestMapping注解的方法加一些邏輯處理;
@ExceptionHandler:用于設置所標識的方法處理的異常,@ExceptionHandler加在ControllerAdvice中,處理全局異常
ExceptionController
@ControllerAdvice
public class ExceptionController {
@ExceptionHandler(value = {ArithmeticException.class,NullPointerException.class})
public String exception(Exception e, Model model){
model.addAttribute("e",e);
return "error";
}
}
@ExceptionHandler的value值可以是數(shù)組,所以可以添加許多可能出現(xiàn)的異常;在該方法中
當出現(xiàn)算數(shù)運算異?;蚩罩羔槷惓>蜁D到我們自己設置的異常頁面,并且展示異常信息。
error.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>錯誤頁面</title>
</head>
<body>
<h1>error</h1>
${e}
</body>
</html>
異常頁面

總結
到此這篇關于Spring MVC項目中異常處理的文章就介紹到這了,更多相關SpringMVC異常處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
intellij idea設置統(tǒng)一JavaDoc模板的方法詳解
這篇文章主要介紹了intellij idea設置統(tǒng)一JavaDoc模板的方法詳解,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
Java開發(fā)框架spring實現(xiàn)自定義緩存標簽
這篇文章主要介紹了Java開發(fā)框架spring實現(xiàn)自定義緩存標簽的詳細代碼,感興趣的小伙伴們可以參考一下2015-12-12
springboot 2.x整合mybatis實現(xiàn)增刪查和批量處理方式
這篇文章主要介紹了springboot 2.x整合mybatis實現(xiàn)增刪查和批量處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringBoot?項目的創(chuàng)建與啟動步驟詳解
這篇文章主要介紹了SpringBoot?項目的創(chuàng)建與啟動,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
實例解析Java的Jackson庫中的數(shù)據(jù)綁定
這篇文章主要介紹了Java的Jackson庫中的數(shù)據(jù)綁定,這里分為通常的簡單數(shù)據(jù)綁定與全數(shù)據(jù)綁定兩種情況來講,需要的朋友可以參考下2016-01-01
Spring Boot 2和Redis例子實現(xiàn)過程解析
這篇文章主要介紹了Spring Boot2發(fā)布與調用REST服務過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11

