参考文章:http://blog.csdn.net/yangcheng33/article/details/77104561

spring中带有的简单异常处理器

在spring mvc的xml中如下配置:

<!-- springmvc提供的简单异常处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
     <!-- 定义默认的异常处理页面 -->
    <property name="defaultErrorView" value="default_error"/>
    <!-- 定义异常处理页面用来获取异常信息的变量名,也可不定义,默认名为exception --> 
    <property name="exceptionAttribute" value="ex"/>
    <!-- 定义需要特殊处理的异常,这是重要点 --> 
    <property name="exceptionMappings">
        <props>
            <prop key="com.exception.CustomException">error</prop>
        </props>
        <!-- 还可以定义其他的自定义异常 -->
    </property>
</bean>

此方法比较简单,容易扩展自定义异常和展示页面。
注意:
1.关于上述需要跳转的error jsp相关的地址配置和controller中使用的Viewname一致。否则会找不到。
2.try catch和throws导致的区别

@RequestMapping("/gothrow")
public ModelAndView hello() throws CustomException{
    if(1>0){
            throw new CustomException("故意");
    }

    ModelAndView mv = new ModelAndView(); 
    mv.setViewName("index");
    return mv;
}

@RequestMapping("/trycatch")
public ModelAndView hello2(){
    if(1>0){
            try {
                throw new CustomException("故意");
            } catch (CustomException e) {
                e.printStackTrace();
            }
    }

    ModelAndView mv = new ModelAndView(); 
    mv.setViewName("index");
    return mv;
}

第一个方法throws出去,一直往外抛;但是在try中就会需要自己在catch中处理,抛不到spring框架来处理。所以,throws会走spring mvc的异常处理,跳转错误页面。但是try不会跳转到相关的页面。

未完待续…

posted on 2018-01-24 18:06  菜码农先生  阅读(106)  评论(0编辑  收藏  举报