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
这两种异常处理方式在项目中不能共存,在开发中通常根据实际情况来选择。