• Spring异常处理实践


    参考文章: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不会跳转到相关的页面。

    未完待续…

  • 相关阅读:
    Cookie存储在哪里
    save the transient instance before flushing错误解决办法
    hibernate中简单的增删改查
    hibernate中get和load的区别
    使用Linux命令修改数据库密码
    配置solrcloud
    如何确定Redis集群中各个节点的主从关系
    解决Eclipse Debug 断点调试的source not found问题
    .NET框架
    ORM框架
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608386.html
Copyright © 2020-2023  润新知