前言

处理器异常是分派和处理请求阶段抛出的异常,HandlerExceptionResolver提供了对处理器异常的处理,并渲染为视图,下面分析spring mvc默认配置的处理器异常解析逻辑。

版本:Spring Framework 4.x

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

默认配置

Dispatcher会加载上下文中的所有HandlerExceptionResolver实例,如果没有使用默认配置。但WebMvcConfigurationSupport定义了以下几个实例:

  • ExceptionHandlerExceptionResolver 对控制器和控制器通知(@Controller&@ControllerAdvice)类上的异常处理器(@ExceptionHandler)方法提供支持。
  • responseStatusExceptionResolver
  • defaultHandlerExceptionResolver

Spring Boot(1.5x)没有对其进行修改。因此默认情况下将使用上述实例。

ExceptionHandlerExceptionResolver

执行Controller级别的@ExceptionHandler,或@ControllerAdvice级别的@ExceptionHandler,以解析异常。

ResponseStatusExceptionResolver

处理声明了@ResponseStatus注解的异常,使用serlvet的 response.sendError()将异常委托给servlet异常处理机制。

DefaultHandlerExceptionResolver

将标准的Spring MVC异常解析为HTTP错误状态码,同样使用了resposen.sendError()

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄