SpringBoot項(xiàng)目中@RestControllerAdvice全局異常失效問(wèn)題的解決
1、問(wèn)題
使用@RestControllerAdvice添加了全局異常,但沒(méi)有生效
/** * 全局異常處理 * @author Eric * @date 2022-10-08 10:00:22 */ @RestControllerAdvice public class ExceptionControllerAdvice { private static final Logger logger = LoggerFactory.getLogger(WxRedpackController.class); /** * 用來(lái)攔截valid的校驗(yàn) * @param e * @return */ @ExceptionHandler(value = MethodArgumentNotValidException.class) public Object handleVaildException(MethodArgumentNotValidException e) { logger.info("數(shù)據(jù)校驗(yàn)出現(xiàn)問(wè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 所在類沒(méi)有被Spring管理
因?yàn)?@SpringbootApplication默認(rèn)掃描本包和子包,為了防止 全局異常類未被掃描到,建議在啟動(dòng)類上加上包掃描
方式2:AOP process() 沒(méi)有異常拋出,自然不會(huì)被攔截掉。檢查項(xiàng)目中的切面編程,查看是否在某個(gè)切面將異常try-catch,然后沒(méi)有扔出來(lái)。
方式3:在@RestControllerAdvice @ConrollerAdivce 所在的類使用@Order(999999),注意這里不要引用錯(cuò)誤的包了了,org.springframework.core.annotation.Order
到此這篇關(guān)于SpringBoot項(xiàng)目中@RestControllerAdvice全局異常失效問(wèn)題的解決的文章就介紹到這了,更多相關(guān)SpringBoot @RestController異常失效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java純代碼實(shí)現(xiàn)導(dǎo)出pdf
在項(xiàng)目開發(fā)中,產(chǎn)品的需求越來(lái)越奇葩啦,開始文件下載都是下載為excel的,做著做著需求竟然變了,要求能導(dǎo)出pdf,所以本文就來(lái)用Java實(shí)現(xiàn)導(dǎo)出pdf功能吧2023-12-12SpringBoot接口加密與解密的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot接口加密與解密的實(shí)現(xiàn)2023-10-10Java Web 簡(jiǎn)單的分頁(yè)顯示實(shí)例代碼
這篇文章主要介紹了Java Web 簡(jiǎn)單的分頁(yè)顯示實(shí)例代碼的相關(guān)資料,本文通過(guò),計(jì)算總的頁(yè)數(shù)和查詢指定頁(yè)數(shù)據(jù)兩個(gè)方法實(shí)現(xiàn)分頁(yè)效果,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06java?cpu飆升問(wèn)題的詳細(xì)分析和處理方法
Java中CPU占用過(guò)高是一個(gè)常見(jiàn)的問(wèn)題,可能是由于線程過(guò)多、死循環(huán)、長(zhǎng)時(shí)間的阻塞、死鎖、GC頻繁等原因?qū)е碌?這篇文章主要介紹了java?cpu飆升問(wèn)題的詳細(xì)分析和處理方法,需要的朋友可以參考下2025-03-03java中httpclient封裝post請(qǐng)求和get的請(qǐng)求實(shí)例
這篇文章主要介紹了java中httpclient封裝post請(qǐng)求和get的請(qǐng)求實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Intellij IDEA集成JProfiler性能分析工具
作為Java程序員,性能分析是我們必須掌握的技能之一,在性能分析中,JProfiler是一款非常強(qiáng)大的工具,本文就來(lái)介紹一下Intellij IDEA集成JProfiler性能分析工具,就有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12Spring Boot集成Quartz注入Spring管理的類的方法
本篇文章主要介紹了Spring Boot集成Quartz注入Spring管理的類的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04