1.spring MVC中定義了一個標準的異常處理類SimpleMappingExceptionResolverjava
該類實現了接口HandlerExceptionResolverweb
2.看下SimpleMappingExceptionResolver都包含那些東西吧spring
//默認的異常名字 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這兩個。sql
下面看看在spring-mvc.xml中的通用配置吧:spring-mvc
<!-- 統一異常處理 --> <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>來處理了mvc
<error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page>
大致上一個常規的統一異常處理就完工了!app