1. 程式人生 > >Spring MVC 統一異常處理總結

Spring MVC 統一異常處理總結

在一個Spring MVC專案中,使用統一異常處理,可以使維護程式碼變得容易。下面總結一下常用的3種方法。

實現HandlerExceptionResolver介面

實現HandlerExceptionResolver介面,實現resolveException()方法,根據傳入的異常型別做出處理。

繼承AbstractHandlerExceptionResolver

繼承AbstractHandlerExceptionResolver類,和第一種方式類似,因為AbstractHandlerExceptionResolver實現了HandlerExceptionResolver介面。
所以,我們繼承之後也是重寫resolveException()

方法,再處理各種異常。

使用註解@ControllerAdvice處理

推薦使用這種方法,比較直觀。下面上程式碼:

首先是自定義異常類

public class ResourceDoesNotExistException extends RuntimeException {
    private static final long serialVersionUID = 7833283455112352655L;

    public ResourceDoesNotExistException() {
        super();
    }

    public ResourceDoesNotExistException
(String message) { super(message); } public ResourceDoesNotExistException(String message, Throwable cause) { super(message, cause); } public ResourceDoesNotExistException(Throwable cause) { super(cause); } protected ResourceDoesNotExistException(String message, Throwable cause, boolean
enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } }

然後是全域性異常統一處理類:

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(value = OtherException.class)
    public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception ex) {
        // 其他異常處理邏輯...
    }

    @ExceptionHandler(value = ResourceDoesNotExistException.class)
    public ModelAndView notFoundErrorHandler(HttpServletRequest req, ResourceDoesNotExistException ex) {
        ModelAndView mav = new ModelAndView();
        mav.setViewName("404");
        return mav;
    }
}

新增@ControllerAdvice註解的類是集中處理異常的地方,可以同時存在多個這樣的類,用來做更細粒度的劃分。
在這個類中,我們可以對每一種異常編寫一種處理邏輯,在方法上使用@ExceptionHandler註解修飾,傳入指定的異常型別即可。
如果是RESTful風格,不返回檢視,也可使用@RestControllerAdvice

相關推薦

Spring MVC 統一異常處理總結

在一個Spring MVC專案中,使用統一異常處理,可以使維護程式碼變得容易。下面總結一下常用的3種方法。 實現HandlerExceptionResolver介面 實現HandlerExcep

使用Spring MVC統一異常處理實戰

tro 處理機制 tor attr 運行 target icon message 404錯誤 原文地址:http://cgs1999.iteye.com/blog/1547197 1 描述 在J2EE項目的開發中,不管是對底層的數據庫操作過程,還是業務層的處理過程,還是控

Spring MVC 統一異常處理的兩種方式

沒有廢話,直接來。 方式一 通過@ControllerAdvice 和 @ExceptionHandler 方法。 @ControllerAdvice 這個註解,可以將對於控制器的全域性配置放到註解了@ControllerAdvice的類上,它結合了 @Component 所以可

Spring MVC 全域性異常處理-RESTAPI介面返回統一JSON格式-自定義異常處理--404異常捕捉

寫之前大概兩週草草的將一些程式碼儲存在草稿箱,今天有空來看,結果都沒有了【怨念】—重新整理一下了 —–【轉載請標註出處】 第一部分:需求 第二部分:實現方式 第三部分:404異常捕捉不能實現分析 第四部分:原因和原始碼分析 第五部分:最終總結 需求

Spring Boot? 統一異常處理

xtend import put itl ava advice efault ges spring 效果區: 代碼區: package com.wls.integrateplugs.exception.dto; public class ErrorI

MVC 統一異常處理

http 方法 ear ted public response n) text over 在出現異常時,我們不希望將錯語的原因讓客戶看見,常常會做一個404錯誤頁面,將所有發生的異常都跳至該頁面,並把異常信息寫在日誌中。步驟如下: 1、讓我們看看Global.asax頁面

spring boot 統一異常處理

res status fin erro throwable instance 拋出異常 方案 let 需求源自於任何一個業務的編寫總會有各種各樣的條件判斷,需要時時手動拋出異常,又希望讓接口返回友好的錯誤信息。 spring boot提供的幫助是自動將異常重定向到路由為/e

利用Spring進行統一異常處理的兩種方式

package com.jay.platform.exception.handler; import java.io.IOException; import java.net.ConnectException; import java.net.SocketTimeoutException; import

spring @ControllerAdvice統一異常處理 Ajax和普通請求

import com.alibaba.fastjson.JSON; import com.zh.entity.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; im

Spring MVC異常處理

一、概況 正常情況下,請求到達服務端,服務端處理完成後返回資料結果(RESTful前後端分離)或返回頁面(傳統jsp web工程),這樣一次完整的流程就走完了。 異常情況下,如404/405/400/500/302/都是由容器或自定義頁面返回給使用者。在現在開發中(REST

Spring MVC學習-----------異常處理以及日誌記錄

如何實現全域性的異常處理? 在spring MVC的配置檔案中: Xml程式碼   <!-- 總錯誤處理-->   <bean id="exceptionResolver

spring boot AOP和spring boot統一異常處理

一,spring AOPspring boot使用AOP,程式碼如下,程式碼比較簡單就不細說了,直接上程式碼,可以使用AOP做日誌處理package com.qwrt.fire.sensor.aop; import com.alibaba.fastjson.JSONArra

詳解Spring MVC/Boot 統一異常處理最佳實踐

開發十年,就只剩下這套架構體系了! >>>   

Spring MVC原始碼(四) ----- 統一異常處理原理解析

SpringMVC除了對請求URL的路由處理特別方便外,還支援對異常的統一處理機制,可以對業務操作時丟擲的異常,unchecked異常以及狀態碼的異常進行統一處理。SpringMVC既提供簡單的配置類,也提供了細粒度的異常控制機制。 SpringMVC中所有的異常處理通過介面HandlerException

Spring Boot學習——統一異常處理

return 方法 ssa static framework 處理異常 tor ebo except 本隨筆記錄使用Spring Boot統一處理異常。 本文實例是從數據庫中根據ID查詢學生信息,要求學生的年齡在14——20歲之間。小於14歲,提

spring-boot實戰【07】【轉】:Spring Boot中Web應用的統一異常處理

http integer private fin ima lex clas 友好 ref 我們在做Web應用的時候,請求處理過程中發生錯誤是非常常見的情況。Spring Boot提供了一個默認的映射:/error,當處理中拋出異常之後,會轉到該請求中處理,並且該請求有一個全

spring boot 1.5.4 統一異常處理(九)

springboot springboot1.5.4 springboot整合springdatajpa springboot集成jdbctemplate springboot異常處理 上一篇:springboot 1.5.4 配置文件詳解(八) 1 Spring Boot統一異

企業分布式微服務雲SpringCloud SpringBoot mybatis (五)Spring Boot中Web應用的統一異常處理

src one exception learn 微服務 public .net 可能 訪問 我們在做Web應用的時候,請求處理過程中發生錯誤是非常常見的情況。Spring Boot提供了一個默認的映射:/error,當處理中拋出異常之後,會轉到該請求中處理,並且該請求有一個

Spring Boot中Web應用的統一異常處理

通過 提示頁面 ret oot 頁面效果 tro ctype doctype ice   我們在做Web應用的時候,請求處理過程中發生錯誤是非常常見的情況。Spring Boot提供了一個默認的映射:/error,當處理中拋出異常之後,會轉到該請求中處理,並且該請求有一個全

spring 或 springboot統一異常處理

pbo catch ada pass ann href TP let copy spring 或 springboot統一異常處理https://blog.csdn.net/xzmeasy/article/details/76150370 一,本文介紹spring MV