1.spring MVC中定义了一个标准的异常处理类SimpleMappingExceptionResolver
该类实现了接口HandlerExceptionResolver
2.看下SimpleMappingExceptionResolver都包含那些东西吧
//默认的异常名字 public static final String DEFAULT_EXCEPTION_ATTRIBUTE = "exception"; //异常列表,包括什么异常要对应什么一场页面处理 private Properties exceptionMappings; //排除的异常 private Class<?>[] excludedExceptions; //默认异常处理页面 private String defaultErrorView; //默认的状态 例如:500 private Integer defaultStatusCode; //状态列表 private Map<String, Integer> statusCodes = new HashMap<String, Integer>(); //异常名字 private String exceptionAttribute = DEFAULT_EXCEPTION_ATTRIBUTE;
上面列出的属性,一般我们用到的Properties,defaultErrorView这两个。
下面看看在spring-mvc.xml中的通用配置吧:
<!-- 统一异常处理 --> <bean id="handlerExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!-- 定义的默认错误处理页面 --> <property name="defaultErrorView" value="error"></property> <!-- 定义错误类型和对应的页面处理 列表 --> <property name="exceptionMappings"> <props> <!-- 举个例子 --> <prop key="java.sql.SQLException">error/sql</prop> </props> </property> </bean>
3.当然我们做完这些工作,还不能完全把所有的异常信息都处理好,有些像404的我们就无能为力了,解决的方法就是在web.xml中定义<error-page>来处理了
<error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page>
大体上一个常规的统一异常处理就完工了!