13.10. 处理异常

当控制器处理请求时,可能会有意想不到的异常产生。为了方便地处理这些异常,Spring提供了HandlerExceptionResolver这个异常解析器接口。 HandlerExceptionResolvers 有点像你在web.xml中所声明的异常映射(exception mapping),但是它处理异常的方式更加灵活。它可以提供当异常产生时控制器的运行状态。同时,在程序中你也有更多应对异常的选项。当你的程序处理完异常后,产生异常的请求会被传递给另一个URL (这个最终结果和你在web.xml中声明的异常处理的效果一样)。

实现HandlerExceptionResolver接口很简单,你只需要实现resolveException(Exception, Handler)这个方法,返回一个ModelAndView对象即可。你也可以直接使用Spring内置的SimpleMappingExceptionResolver。 这个解析器允许你把异常的类名映射到处理完异常后显示的视图名。这和Servlet API中提供的异常处理功能相同。不同的是,它还允许通过对不同的处理器实现更细粒度的异常映射。