当前位置:  开发笔记 > 编程语言 > 正文

Spring Boot @ControllerAdvice异常处理程序没有触发

如何解决《SpringBoot@ControllerAdvice异常处理程序没有触发》经验,为你挑选了0个好方法。

我设置了以下控制器建议,以返回错误条件的API合同:

@ControllerAdvice
public class ExceptionHandler : ResponseEntityExceptionHandler()
{
    @ExceptionHandler(Throwable::class)
    @ResponseBody
    public fun onException(ex: Throwable): ResponseEntity
    {
        val errorResponse = ErrorResponse(
           response = ResponseHeader(ex.responseCode(), ex.message))
        return ResponseEntity(errorResponse, HttpStatus.UNAUTHORIZED);
    }

}

工作的罚款,然后停止工作.现在所有异常都被路由到BasicErrorController,返回以下格式:

{
  "timestamp" : 1450495303166,
  "status" : 403,
  "error" : "Forbidden",
  "message" : "Access Denied",
  "path" : "/profile/candidates"
}

以上是一个很好的自以为是的起点,但现在它不会让步.

我尝试用一​​个ExceptionHandlerExceptionResolver但是没有用的实例替换错误处理程序.

我已经尝试制作自己的CustomErrorHandler,但这也不合适,因为在HttpServletRequest重新路由到自定义错误控制器时,原始异常不再存在.需要此信息才能向客户端返回适当的响应.

我怎么样:

使SpringBoot 向异常控制器转发异常.

恢复@ControllerAdvice异常处理程序,这样我就可以返回一个合适的响应体和状态代码.

在启动弹簧日志:

main] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in exceptionHandler
main] .m.m.a.ExceptionHandlerExceptionResolver : Detected @ExceptionHandler methods in responseEntityExceptionHandler

编辑:

在阅读了Spring Boot文档之后,我现在认为BasicErrorController只应该针对任何未被a处理的异常触发@ControllerAdvice.这似乎没有发生.所以问题是为什么?

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有