当与请求匹配的控制器处理请求时,可能会发生意料之外的异常。
Spring提供了HandlerExceptionResolvers
来减轻这些异常带来的痛苦。
HandlerExceptionResolvers
有点像在Web应用程序描述符web.xml
中定义的异常映射(exception mappings),
但是它处理异常的方式更加灵活。它可以提供当异常被抛出时是什么处理程序在执行的信息。
更进一步,一个以编程方式处理异常的途径,让你对于在请求被指向另一个URL(与使用按servlet的异常映射的最终结果一样)之前如何恰当的响应有了更多选择。
实现HandlerExceptionResolver
接口很简单,
只需实现resolveException(Exception,Handler)
方法,
并返回一个ModelAndView
,除此之外,
也可以直接使用SimpleMappingExceptionResolver
。
这个解析器允许你取得任何可能被抛出的异常的类名,并把它映射到一个视图名。
这和Servlet API中提供的异常映射特性在功能上是相当的,但是,它还允许对来自不同处理程序的异常实现更细粒度的异常映射。