Spring3.0中对异常处理有一种简单的可以实现全局异常控制的方式,使用HandlerExceptionResolver接口,
Spring已经提供了一个默认的实现类SimpleMappingExceptionResolver,
基于HandlerExceptionResolver接口的异常处理:
使用这种方式只需要实现resolveException方法,该方法返回一个ModelAndView对象,在方法内部对异常的类型进行判断,然后常见合适的ModelAndView对象,如果该方法返回了null,则Spring会继续寻找其他的实现了HandlerExceptionResolver 接口的Bean。换句话说,Spring会搜索所有注册在其环境中的实现了HandlerExceptionResolver接口的Bean,逐个执行,直到返回了一个ModelAndView对象。
简单实现全局异常处理
由于HandlerExceptionResolver有一个默认的实现类SimpleMappingExceptionResolver,所以可以直接使用<bean/>
节点进行配置定义异常,示例如下
Xml代码
- <beans:bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <!-- 定义默认的异常处理页面 -->
<!-- <beans:property name="defaultErrorView" value="noauthority/error/error" /> -->
<beans:property name="exceptionMappings">
<beans:props>
- <beans:prop key="java.lang.Exception">noauthority/error/exception</beans:prop>
</beans:props>
</beans:property>
</beans:bean>