@ControllerAdvice能捕获异常但未返回给客户端,请问遗漏了什么配置
全局异常处理器已捕获异常但未返回信息给客户端的排查项
- 可先将类上的
@ControllerAdvice替换为@RestControllerAdvice,等同于@ControllerAdvice加@ResponseBody注解,强制返回的ResponseEntity内容写入响应体,避免被视图解析器拦截跳转至错误页。 ErrorResponse类缺少序列化所需的Get方法
你返回的自定义ErrorResponse类如果所有字段为私有属性,且没有提供public修饰的getter方法,Jackson序列化时无法读取字段值,会返回空响应体。可以给对应字段添加get方法,或者在类上添加Lombok的@Data注解解决。- 被额外的过滤器/拦截器篡改了响应
如果项目中配置了统一响应封装过滤器、接口签名校验拦截器等组件,部分实现未兼容异常处理场景的返回值,会在你的异常处理器返回结果后,覆盖甚至清空响应内容,可调试检查过滤器链中后续节点的处理逻辑。 - 未覆盖父类所有默认异常处理逻辑
你当前只重写了handleMethodArgumentNotValid方法,若触发了ResponseEntityExceptionHandler中其他未被重写的默认异常处理方法,会走父类默认返回逻辑,不会返回你自定义的ErrorResponse结构。
内容的提问来源于stack exchange,提问作者Sanchit Jain
相关产品推荐
相关产品推荐

