springMVC 通过 HandlerExceptionResolver处理程序的异常,包括处理器映射、数据绑定以及处理器执行时发生的异常。
对于HandlerExceptionResolver接口,仅有一个接口方法:
ModelAndView resolveException( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex);
当发生异常的时候,Spring MVC将会调用resolveException()的方法,并转到ModelAndView对应的视图中,作为一个异常报告反馈给用户。
对于实现其的静态类:AbstractHandlerExceptionResolver
对于其的实现类:
- DefaultHandlerExceptionResolver
- SimpleMappingExceptionResolver
- AnnotationMethodHandlerExceptionResolver
- ResponseStatusExceptionResolver
- AbstractHandlerMethodExceptionResolver
对于类AnnotationMethodHandlerExceptionResolver
由于spring MVC已经默认的注册了还这个类,它允许通过@ExceptionHandler的注解指定处理特定异常的方法
对于类SimpleMappingExceptionResolver
如果希望对所有异常进行统一的处理,可以使用这个类,它将异常类名映射为视图名,即发生异常的时候使用对应的视图报告错误,
error/404 error/500 404 500
同时,我们也可以自己实现ExceptionResolver覆盖resolverException()接口方法的实现,编写自己的异常解析器,做一些特定的工作,如将异常信息保存到数据库中等。