日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Spring 全局异常捕获

發(fā)布時(shí)間:2025/3/12 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 全局异常捕获 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

引言

前后端分離開發(fā),后臺(tái)有時(shí)候會(huì)出現(xiàn)不可預(yù)知的異常(運(yùn)行時(shí)異常),在實(shí)際生產(chǎn)中通常需要統(tǒng)一返回符合一定響應(yīng)結(jié)構(gòu)的異常信息給前端,這一方面可以避免用戶看到后臺(tái)的報(bào)錯(cuò)信息,一方面也是保護(hù)后端程序免受惡意用戶的試探。

簡(jiǎn)單總結(jié)一個(gè)Spring框架下的全局異常捕獲的實(shí)現(xiàn)方式——@RestControllerAdvice。

一、代碼演示

import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;/*** 統(tǒng)一異常捕獲類*/ @Slf4j @RestControllerAdvice public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {@ExceptionHandler(RuntimeException.class)public CommonResp runtimeExceptionProcess(Exception e) {log.error("統(tǒng)一異常捕獲:{}", e.getMessage());e.printStackTrace();CommonResp resp = new CommonResp("9999", "服務(wù)器異常!");log.info("統(tǒng)一異常響應(yīng):{}", resp);return resp;} }

二、@RestControllerAdvice

Advice在AOP編程中代表了切面的執(zhí)行邏輯,相當(dāng)于 OOP 中的方法。

@RestControllerAdvice 是 Spring 3.2引入的一個(gè)協(xié)助 Controller 層織入切面邏輯的AOP注解,標(biāo)記類上,類似的注解還有@ControllerAdvice。二者的區(qū)別是前者只用于基于REST API風(fēng)格的 JSON響應(yīng)結(jié)果的controller,簡(jiǎn)單的說(shuō),@ControllerAdvice + @ResponseBody = @RestControllerAdvice 。

@ControllerAdvice public class MyControllerAdvice {@ResponseBody@ExceptionHandler(value = Exception.class)public Map errorHandler(Exception ex) {// 異常處理邏輯return map;} }

三、ResponseEntityExceptionHandler

ResponseEntityExceptionHandler 包裝了各種Spring MVC在處理請(qǐng)求時(shí)可能拋出各類異常的處理,通過(guò)對(duì)該類的繼承,我們可以重寫對(duì)應(yīng)的處理邏輯。

比如,我們可以通過(guò)繼承該類,在我們的@RestControllerAdvice 類中重寫?handleBindException(..) 方法,來(lái)處理數(shù)據(jù)綁定的異常信息。

當(dāng)然,第一節(jié)中的代碼案例其實(shí)并不需要繼承??ResponseEntityExceptionHandler ,但也可以作為一種附加參考,方便以后對(duì)特定異常進(jìn)行擴(kuò)展,當(dāng)然也可以自定義異常來(lái)處理。

?

總結(jié)

以上是生活随笔為你收集整理的Spring 全局异常捕获的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。