@ControllerAdvice 不生效

大家可以先去看一下这个连接里的内容,如果还是不起作用的朋友,请看我下面码的字。

​​​​​​@RestControllerAdvice/@ControllerAdvice无效解决-左搜 (leftso.com)

我和大家一样,上面内容中提到的错误都没有。

你可以试下把xml版本的异常处理器注释掉,此时你会发现你的注解版生效了。

为什么会这样呢?因为你的xml中配置的异常处理器的id和注解版异常处理器的类名相同(只是首字母一个大写一个小写而已),此时,spring先加载了注解版,后加载了xml版的,所以注解版的被代替了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果使用@ControllerAdvice注解拦截接口时,没有拦截到手动抛出的异常,可能是以下原因: 1. 异常类型不匹配:@ControllerAdvice通常是根据异常类型来拦截异常的,如果手动抛出的异常类型与拦截的异常类型不匹配,就不会被拦截。可以尝试在@ControllerAdvice注解中添加拦截的异常类型,例如: ``` @ControllerAdvice(Exception.class) public class GlobalExceptionHandler { // ... } ``` 2. 异常未被捕获:如果手动抛出异常时,没有被try-catch语句捕获,而是直接抛出到调用栈上,就不会被@ControllerAdvice拦截。可以尝试在抛出异常的方法上添加throws声明,或者在调用该方法时使用try-catch语句捕获异常。 3. 拦截器顺序问题:如果项目中使用了多个拦截器,可能存在拦截器顺序问题,导致@ControllerAdvice无法拦截异常。可以尝试在拦截器中调整拦截器的顺序,或者在@ControllerAdvice注解中添加优先级,例如: ``` @ControllerAdvice(priority = 1) public class GlobalExceptionHandler { // ... } ``` 4. 拦截器未激活:如果没有激活拦截器,@ControllerAdvice也无法拦截异常。可以尝试在配置文件中激活拦截器,例如: ``` spring.mvc.throw-exception-if-no-handler-found=true spring.resources.add-mappings=false ``` 总之,如果使用@ControllerAdvice注解拦截接口时,没有拦截到手动抛出的异常,可以从异常类型、异常捕获、拦截器顺序和拦截器激活等方面进行排查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值