异常处理器
- 异常处理器
- 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";}}