苏州丰潮贸易有限公司 发表于 2021-5-5 08:38:04

RestControllerAdvice 不生效问题

使用RestControllerAdvice做全局的异常控制,返回我自定义的一个对象。
使用debug模式步进,出现错误的时候能够正常的进入RestControllerAdvice注解下的类中对应ExceptionHandler注解的方法,也返回了我自定义的对象,但是在最后的返回结果中,并不是我自定义的这个对象,而是springmvc的默认错误,Internal Server Error。
上网查了下,得到的答案基本都是错误没正常抛出啊,切面中进行了限制啊什么的,但错误肯定是正常抛出了,要不不会进入到那个异常控制中。切面也只是一些鉴权啊什么的,我也试过把aop都停用掉,但还是不行。

大漢愚公 发表于 2021-5-10 13:21:40

/**
* @author liuyh
* @Description:
* @date 2020/9/2214:13
*/
@ControllerAdvice
@Slf4j
public class ExceptionError {
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result defaultErrorHandler(HttpServletRequest req, HttpServletResponse resp, Exception e) {
      e.printStackTrace();
      Result resul = new Result();
      if (e instanceof HttpRequestMethodNotSupportedException) {
            resul.setResltInfo(Constant.CODE_TYPE_10, "非法请求", e.getMessage());
      } else if (e instanceof HystrixRuntimeException) {
            resul.setResltInfo(Constant.CODE_TYPE_30, "feign调用系统异常", e.getCause().getMessage());
      } else {
            resul.setResltInfo(Constant.CODE_TYPE_1, "系统异常", e.getMessage());
      }
      return resul;
    }
}

飞翔的蚂蚁 发表于 2021-5-19 04:23:50

我是在Controller返回的也是resul这个类型,如果业务发生异常,在自定义异常捕获里面处理完异常,在由Controller层返给前台。

梦回传奇 发表于 2021-5-21 07:47:34

异常处理与代码运行模式有关,通常调试模式之外的情况可能不支持异常处理机制。如果不是debug模式编译,会自动废弃异常有关代码。而且,advice最多是建议系统使用,非调试模式下通常会被系统忽略。

河马帝 发表于 2021-5-26 11:01:30

请问楼主解决了吗 我也遇到了同样的问题
页: [1]
查看完整版本: RestControllerAdvice 不生效问题