@ControllerAdvice处理异常方面比@ExceptionHandler或HandlerExceptionResolver有什么优势?

Spring 3.2 引入了用于处理 Spring MVC 应用程序中异常的注释。但是在此版本之前,Spring已经或处理Spring MVC应用程序中的异常。那么,为什么Spring 3.2引入了注释来处理异常呢?我坚信Spring 3.2引入了注释来解决限制或使异常处理更加强大@ControllerAdvice@ExceptionHandlerHandlerExceptionResolver@ControllerAdvice@ControllerAdvice@ExceptionHandlerHandlerExceptionResolver

任何人都可以解释一下过度或处理异常的优点吗?@ControllerAdvice@ExceptionHandlerHandlerExceptionResolver


答案 1

@ExceptionHandler

@ExceptionHandler控制器级别工作,它仅对该特定控制器处于活动状态,而不是对整个应用程序全局处于活动状态。

处理程序异常解析器

这将解决应用程序引发的任何异常。它用于将标准 Spring 异常解析为其相应的 HTTP 状态代码。它无法控制响应的主体,这意味着它不会对响应的主体设置任何内容。它确实映射了响应上的状态代码,但正文为 null

@ControllerAdvice

@ControllerAdvice用于 Spring MVC 应用程序中的全局错误处理。它还可以完全控制响应的正文和状态代码。


答案 2

A 是控制器的本地:只有来自此控制器的异常才会路由到他的@ExceptionHandler@ExceptionHandler

但是a是全局的:你可以有一个集中的方式来处理异常,绑定等,它适用于所有定义的控制器。@ControllerAdvice


推荐