错误页面注册商和全局异常处理

时间:2017-08-25 12:26:24

标签: spring-boot exception-handling custom-error-pages

我正在创建一个Spring Boot Web应用程序,但是我很困惑为什么人们使用Global Exception处理程序(@ControllerAdvice)时会出现更整洁,更明确的错误页面注册器。请有人解释更多,是否可以从全局异常处理程序类(使用@ExtrollerAdvice注释的类,使用@Exceptionhandler方法)调用错误页面注册器。

2 个答案:

答案 0 :(得分:2)

布莱恩回答说,我认为你可以做到这一点。如果你仍然需要推荐,我有一个样本来证明这个:https://github.com/kennytai/SampleSpringbootExceptionHandler 在此示例中,我使用课程@ControllerAdvice中的GlobalExceptionHandler来管理TestController中的所有异常。

希望得到这个帮助。

答案 1 :(得分:1)

实际上,error pages mechanism in Spring Boot是全球性的;它捕获了应用程序未处理的所有异常。请注意,在Servlet环境中,它甚至会将请求发送回/error路径上的容器。

你是对的,这种机制非常强大,你可以用它来实现很多目标。

你提到的其他异常处理机制是由Spring MVC本身提供的。它们在处理请求期间执行,不需要对容器进行额外的调度。在某些情况下,它们可能会受到更多限制,因为它们提供的功能少于完整的ErrorController(MVC控制器)。 但与错误页面不同,您可以将其配置为仅关注特定错误:

  • 您可以在Controller中声明@ExceptionHandler并指定您要处理的异常类型
  • 您可以将@ControllerAdvice注释配置为仅应用于特定包,扩展特定接口的控制器或使用特定注释注释

当你想在控制器级别处理业务异常时,我会说后者非常有用。您可以使用错误页面执行此操作,但最终可能会遇到一个处理太多事情的错误控制器。