我好怕自己成为有故事的人,这一天我怕了好久好久,我唯一能做的只有尽人之力。

spring MVC中的异常统一处理

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>

 

大体上一个常规的统一异常处理就完工了!

posted @ 2015-11-29 22:23  goLazy  阅读(1254)  评论(1编辑  收藏  举报
你是否也有自己的故事?埋藏在自己心的最深的地方。