异常处理器

  • 异常处理器
    • 1、基于配置的异常处理
    • 2、基于注解的异常处理

异常处理器

1、基于配置的异常处理

SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver

HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver和SimpleMappingExceptionResolver

  • DefaultHandlerExceptionResolver:SpringMVC默认异常处理器
  • SimpleMappingExceptionResolver:自定义的异常处理器

DefaultHandlerExceptionResolver
返回的是ModelAndView,发生异常,跳转到其指定的页面。就是我们发生错误看到的404、400、400…

@Nullableprotected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) {try {if (ex instanceof HttpRequestMethodNotSupportedException) {return this.handleHttpRequestMethodNotSupported((HttpRequestMethodNotSupportedException)ex, request, response, handler);}if (ex instanceof HttpMediaTypeNotSupportedException) {return this.handleHttpMediaTypeNotSupported((HttpMediaTypeNotSupportedException)ex, request, response, handler);}

SpringMVC提供了自定义的异常处理器SimpleMappingExceptionResolver,使用方式:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"><property name="exceptionMappings"><props><prop key="java.lang.ArithmeticException">error</prop></props></property><property name="exceptionAttribute" value="ex"></property></bean>

2、基于注解的异常处理

//@ControllerAdvice将当前类标识为异常处理的组件@ControllerAdvicepublic class ExceptionController {//@ExceptionHandler用于设置所标识方法处理的异常@ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class})//ex表示当前请求处理中出现的异常对象public String testException(Exception ex, Model model) {model.addAttribute("ex", ex);return "error";}}