亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot項(xiàng)目中@RestControllerAdvice全局異常失效問題的解決

 更新時(shí)間:2024年11月01日 10:39:41   作者:Eric-x  
@RestController注解是一個(gè)用于定義RESTful Web服務(wù)的控制器的特殊注解,它是@Controller和@ResponseBody注解的結(jié)合體,意味著你不需要在每個(gè)處理請(qǐng)求的方法上都添加@ResponseBody,本文給大家介紹了解決SpringBoot項(xiàng)目中@RestControllerAdvice全局異常失效問題

1、問題

使用@RestControllerAdvice添加了全局異常,但沒有生效

/**
 * 全局異常處理
 * @author Eric
 * @date 2022-10-08 10:00:22
 */
@RestControllerAdvice
public class ExceptionControllerAdvice {

    private static final Logger logger = LoggerFactory.getLogger(WxRedpackController.class);

    /**
     * 用來攔截valid的校驗(yàn)
     * @param e
     * @return
     */
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    public Object handleVaildException(MethodArgumentNotValidException e) {
        logger.info("數(shù)據(jù)校驗(yàn)出現(xiàn)問題:{},異常類型:{}", e.getMessage(), e.getClass());
        BindingResult result = e.getBindingResult();
        if (result.hasErrors()) {
            Map<String, String> errorMap = new HashMap<>();
            result.getFieldErrors().forEach((item) -> {
                //獲取到的錯(cuò)誤提示
                String message = item.getDefaultMessage();
                //獲取到的錯(cuò)誤屬性名稱
                String field = item.getField();
                errorMap.put(field, message);
            });
            return ResponseUtil.fail(DATA_ERROR.code(),errorMap);
        }
        return ResponseUtil.fail();
    }


    /**
     * 攔截未知的運(yùn)行時(shí)異常
     */
    @ExceptionHandler(RuntimeException.class)
    public Object notFount(RuntimeException e) {
        logger.info("運(yùn)行時(shí)異常:", e);
        return ResponseUtil.fail(DATA_ERROR.code(),e.getMessage());
    }

    /**
     * 系統(tǒng)異常
     */
    @ExceptionHandler(Exception.class)
    public Object handleException(Exception e) {
        logger.info(e.getMessage(), e);
        return ResponseUtil.fail(DATA_ERROR.code(),"服務(wù)器網(wǎng)絡(luò)擁堵,請(qǐng)稍后再試");
    }

}

2、解決

方式1:@ExceptionHandler 所在類沒有被Spring管理

因?yàn)?@SpringbootApplication默認(rèn)掃描本包和子包,為了防止 全局異常類未被掃描到,建議在啟動(dòng)類上加上包掃描

方式2:AOP process() 沒有異常拋出,自然不會(huì)被攔截掉。檢查項(xiàng)目中的切面編程,查看是否在某個(gè)切面將異常try-catch,然后沒有扔出來。

方式3:在@RestControllerAdvice @ConrollerAdivce 所在的類使用@Order(999999),注意這里不要引用錯(cuò)誤的包了了,org.springframework.core.annotation.Order

到此這篇關(guān)于SpringBoot項(xiàng)目中@RestControllerAdvice全局異常失效問題的解決的文章就介紹到這了,更多相關(guān)SpringBoot @RestController異常失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java Class文件內(nèi)部結(jié)構(gòu)解析過程詳解

    java Class文件內(nèi)部結(jié)構(gòu)解析過程詳解

    java class的文件結(jié)構(gòu),java class文件結(jié)構(gòu)是基于字節(jié)流的,用unicode進(jìn)行編碼,下面說說java Class文件內(nèi)部結(jié)構(gòu)分析
    2013-11-11
  • JAVA WEB中Servlet和Servlet容器的區(qū)別

    JAVA WEB中Servlet和Servlet容器的區(qū)別

    這篇文章主要介紹了JAVA WEB中Servlet和Servlet容器的區(qū)別,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • 詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵

    詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵

    這篇文章主要介紹了詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵,有興趣的可以了解一下。
    2017-01-01
  • Java中的Cursor使用詳解

    Java中的Cursor使用詳解

    本文介紹了Java中的Cursor接口及其在大數(shù)據(jù)集處理中的優(yōu)勢,包括逐行讀取、分頁處理、流控制、動(dòng)態(tài)改變查詢、并發(fā)控制和減少網(wǎng)絡(luò)流量等,感興趣的朋友一起看看吧
    2025-02-02
  • Java中==與equals的區(qū)別小結(jié)

    Java中==與equals的區(qū)別小結(jié)

    這篇文章主要介紹了Java中==與equals的區(qū)別小結(jié),本文總結(jié)結(jié)論:== 與 equals()比較的內(nèi)容是不同的,equals()方式是String類中的方法,它用于比較兩個(gè)對(duì)象引用所指的內(nèi)容是否相等,而 == 比較的是兩個(gè)對(duì)象引用的地址是否相等,需要的朋友可以參考下
    2015-06-06
  • SpringBoot集成JWT生成token及校驗(yàn)方法過程解析

    SpringBoot集成JWT生成token及校驗(yàn)方法過程解析

    這篇文章主要介紹了SpringBoot集成JWT生成token及校驗(yàn)方法過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java lambda list轉(zhuǎn)換map時(shí),把多個(gè)參數(shù)拼接作為key操作

    Java lambda list轉(zhuǎn)換map時(shí),把多個(gè)參數(shù)拼接作為key操作

    這篇文章主要介紹了Java lambda list轉(zhuǎn)換map時(shí),把多個(gè)參數(shù)拼接作為key操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 詳解Java編程規(guī)約(命名風(fēng)格、常量定義、代碼格式)

    詳解Java編程規(guī)約(命名風(fēng)格、常量定義、代碼格式)

    這篇文章主要介紹了詳解Java編程規(guī)約(命名風(fēng)格、常量定義、代碼格式),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-10-10
  • 詳解Java使用JMH進(jìn)行基準(zhǔn)性能測試

    詳解Java使用JMH進(jìn)行基準(zhǔn)性能測試

    本文主要介紹了Java使用JMH進(jìn)行基準(zhǔn)性能測試,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java解析使用JSON的多種方法

    Java解析使用JSON的多種方法

    使用JSON作為數(shù)據(jù)傳輸,在瀏覽器端非常方便。JSON去除了所有JavaScript執(zhí)行代碼,只保留對(duì)象格式,而且JSON天生適合JavaScript處理,所以,絕大多數(shù)REST?API都選擇JSON作為數(shù)據(jù)傳輸格式?,F(xiàn)在問題來了:使用Java如何對(duì)JSON進(jìn)行讀寫?
    2022-12-12

最新評(píng)論