@RestControllerAdvice/@ControllerAdvice无效解决

教程分享 > Java教程 (6444) 2023-03-28 11:29:14
@RestControllerAdvice/@ControllerAdvice不生效、没起作用解决


正常情况下,通过@RestControllerAdvice/@ControllerAdvice注解来统一处理全局异常代码是非常简单的。如下
@RestControllerAdvice
public class RestExceptionHandler {

    @ExceptionHandler(value = { BusinessException.class })
    public Result business(BusinessException ex) {
        return Result.fail("业务异常:"+ex.getMessage());
    }

    @ExceptionHandler(value = { MethodArgumentNotValidException.class })
    public Result methodArgumentNotValidException(MethodArgumentNotValidException ex) {
        String field=ex.getBindingResult().getFieldError().getField().replace("parameter.","");
        String message=ex.getBindingResult().getFieldError().getDefaultMessage();
        return Result.fail("验证失败:字段["+field+"]"+message);
    }

    @ExceptionHandler(value = { Exception.class })
    public Result exception(Exception ex) {
        return Result.fail("系统异常:"+ex.getMessage());
    }
}
但是,某些情况下,我们的全局handler无效了。咋个回事儿呢?

解决办法:

1.确保注解@RestControllerAdvice/@ControllerAdvice的类被spring容器管理到。

    ①spring boot Java配置检查@SpringBootApplication(scanBasePackages = )(scanBasePackages 配置的包是否包含这个类默认情况下spring boot项目扫描的是@SpringBootApplication注解所在类的包及子包)
    ② xml配置的spring 普通项目检查<context:component-scan base-package="com.test"/>

2.检查项目中所有的切面编程,是否在某个切面将异常try-catch然后没有扔出来。常见的就是切面的环绕处理,捕获了异常忘记抛出来。

3.检查项目中是否有其他的相同的全局异常处理类,例如BaseController中是否已经定义了








 
https://www.leftso.com/article/430.html

相关文章
@RestControllerAdvice/@ControllerAdvice不生效、没起作用解决
           Spring boot/mvc项目中通过@RestControllerAdvice或者@ControllerAdvice配合@ExceptionHandler实现全局异常统一处理
Spring boot 全局异常捕捉,spring boot,java
问题描述idea启动maven的JavaFX项目报错:Exception in Application start method java.lang.reflect.InvocationTarg...
Java编程之Spring Boot 文件上传 REST风格API ajax方式
Java编程之spring boot FastDFS Java client使用,Java编程,FastDFS Java客户端
Java编程之Spring Cloud Hystrix Circuit熔断/断路
Vert.x java 入门,Vert.x这个框架在常规的web业务开发中估计还不是很成熟。但是了解了他的一些原理我觉得可以有一番作为。今天主要简单讲解下eclipse Vert.x是什么有什么...
1.概要在本Spring boot教程中,我们将学习如何验证发送到PUT/POST API请求的数据BODY
问题描述JavaFX maven项目在idea中启动报错:Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMet...
问题描述最近写JavaFX程序遇到了下面的错误:Exception in thread "pool-2-thread-1" java.lang.IllegalStateException: No...
Java编程中Spring Boot整合RabbitMQ实现消息中间件RabbitMQ的使用
Java编程之Spring Boot通过JMSTemplate 整合ActiveMQ
Java编程之java static关键字,Java编程,static关键字
Spring Boot MQTT协议通过spring boot整合apache artemis实现Java语言MQTT协议通信,搭建MQTT服务器可以参考上一篇 MQTT Java入门-搭建MQ...