SpringBoot項目中@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的校驗 * @param e * @return */ @ExceptionHandler(value = MethodArgumentNotValidException.class) public Object handleVaildException(MethodArgumentNotValidException e) { logger.info("數(shù)據(jù)校驗出現(xiàn)問題:{},異常類型:{}", e.getMessage(), e.getClass()); BindingResult result = e.getBindingResult(); if (result.hasErrors()) { Map<String, String> errorMap = new HashMap<>(); result.getFieldErrors().forEach((item) -> { //獲取到的錯誤提示 String message = item.getDefaultMessage(); //獲取到的錯誤屬性名稱 String field = item.getField(); errorMap.put(field, message); }); return ResponseUtil.fail(DATA_ERROR.code(),errorMap); } return ResponseUtil.fail(); } /** * 攔截未知的運行時異常 */ @ExceptionHandler(RuntimeException.class) public Object notFount(RuntimeException e) { logger.info("運行時異常:", 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ǎng)絡擁堵,請稍后再試"); } }
2、解決
方式1:@ExceptionHandler 所在類沒有被Spring管理
因為 @SpringbootApplication默認掃描本包和子包,為了防止 全局異常類未被掃描到,建議在啟動類上加上包掃描
方式2:AOP process() 沒有異常拋出,自然不會被攔截掉。檢查項目中的切面編程,查看是否在某個切面將異常try-catch,然后沒有扔出來。
方式3:在@RestControllerAdvice @ConrollerAdivce 所在的類使用@Order(999999),注意這里不要引用錯誤的包了了,org.springframework.core.annotation.Order
到此這篇關于SpringBoot項目中@RestControllerAdvice全局異常失效問題的解決的文章就介紹到這了,更多相關SpringBoot @RestController異常失效內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- SpringBoot中@RestControllerAdvice注解實現(xiàn)全局異常處理類
- springboot的統(tǒng)一異常處理,使用@RestControllerAdvice詳解
- SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處理類失效原因分析
- SpringBoot中@RestControllerAdvice注解的使用
- SpringBoot的@RestControllerAdvice作用詳解
- SpringBoot常用注解@RestControllerAdvice詳解
- SpringBoot中的@RestControllerAdvice注解詳解
- SpringBoot?@RestControllerAdvice注解對返回值統(tǒng)一封裝的處理方法
- SpringBoot中@RestControllerAdvice 全局異常處理的實現(xiàn)
相關文章
JAVA WEB中Servlet和Servlet容器的區(qū)別
這篇文章主要介紹了JAVA WEB中Servlet和Servlet容器的區(qū)別,文中示例代碼非常詳細,供大家參考和學習,感興趣的朋友可以了解下2020-06-06詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵
這篇文章主要介紹了詳解Java MyBatis 插入數(shù)據(jù)庫返回主鍵,有興趣的可以了解一下。2017-01-01SpringBoot集成JWT生成token及校驗方法過程解析
這篇文章主要介紹了SpringBoot集成JWT生成token及校驗方法過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04Java lambda list轉換map時,把多個參數(shù)拼接作為key操作
這篇文章主要介紹了Java lambda list轉換map時,把多個參數(shù)拼接作為key操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08詳解Java編程規(guī)約(命名風格、常量定義、代碼格式)
這篇文章主要介紹了詳解Java編程規(guī)約(命名風格、常量定義、代碼格式),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-10-10