与@ExceptionHandler或HandlerExceptionResolver相比,@ ControllerAdvice在处理异常方面有什么优势?
问题内容:
Spring 3.2 引入了@ControllerAdvice
注释,用于在Spring
MVC应用程序中处理异常。而在此之前版本的春天已经@ExceptionHandler
或HandlerExceptionResolver
以处理在Spring
MVC应用程序异常。那么为什么 Spring 3.2 引入了@ControllerAdvice
注释来处理异常?我坚信 Spring
3.2 引入了@ControllerAdvice
注解 来解决 @ExceptionHandler
or
的局限性,HandlerExceptionResolver
或者使 异常处理更加强大 。
谁能解释@ControllerAdvice
过度@ExceptionHandler
或HandlerExceptionResolver
处理异常的好处?
问题答案:
@ExceptionHandler
@ExceptionHandler
在 Controller级别 工作,并且仅在该 特定Controller上 处于活动状态 ,
而在整个应用程序中则不处于全局状态。
HandlerExceptionResolver
这将解决应用程序引发的任何异常。它用于将标准Spring异常解析为其 对应的HTTP状态代码 。它没有控制响应的主体,这意味着
它没有为响应的主体设置任何内容, 它确实 在响应 上映射了状态代码,但 主体为null 。
@ControllerAdvice
@ControllerAdvice
用于Spring MVC应用程序中的全局错误处理。它还完全控制响应主体和状态代码。