3.17.1 Spring MVC异常处理接口以及实现类
HandlerExceptionResolver接口
HandlerExceptionResolver是Spring3.0之后新增的一个重要接口,负责Spring MVC的异常处理.
该接口只有一个方法签名:
1 | ModelAndView resolveException( |
resolveException方法处理程序执行期间被抛出的异常,返回一个模型和视图,视图通常是一个特定的错误处理页面。
AbstractHandlerExceptionResolver抽象类
AbstractHandlerExceptionResolver抽象类实现了HandlerExceptionResolver接口,重写了HandlerExceptionResolver接口的resolveException方法用于处理异常.
AbstractHandlerMethodExceptionResolver抽象类
AbstractHandlerMethodExceptionResolver抽象类继承了AbstractHandlerExceptionResolver抽象类,该类主要就是为HandlerMethod类服务,即handler参数是HandlerMethod类型。
ExceptionHandlerExceptionResolver类
ExceptionHandlerExceptionResolver类继承自AbstractHandlerMethodExceptionResolver,该类主要处理Controller中使用@ExceptionHandler注解的方法和@ControllerAdvice注解定义的类。该类也是<mvc:annotation- driven/>配置中定义的HandlerExceptionResolver实现类之一,大多数异常处理都由该类操作。
SimpleMappingExceptionResolver类
SimpleMappingExceptionResolver继承自AbstractHandlerExceptionResolver抽象类,SimpleMappingExceptionResolver是一个根据配置来解析异常的类,包括异常类型、默认的错误视图、默认的响应码及异常映射等配置属性。
两个实现类的用途
因此,在Spring MVC中进行异常处理,
- 如果选择
XML配置,则使用SimpleMappingExceptionResolver类; - 如果使用
@ExceptionHandler注解和@ControllerAdvice注解,则由ExceptionHandlerExceptionResolver类进行处理。
提示:SimpleMappingExceptionResolver和ExceptionHandlerExceptionResolver这两种异常处理方式在项目中不能共存,在开发中通常根据实际情况来选择。