zoukankan      html  css  js  c++  java
  • 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不会跳转到相关的页面。

    未完待续…

  • 相关阅读:
    NetStat
    Linux远程目录挂载
    Mysql服务彪高排查方式及索引的正确使用步骤
    Linux查看哪些进程占用的系统 buffer/cache 较高 (hcache,lsof)命令
    防止sql注入的最好方式
    Fortify---Detail--Sql注入
    百亿级数据处理优化
    半年的总结和思考,继续前行
    Protoc Buffer 优化传输大小的一个细节
    RPC
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608386.html
Copyright © 2011-2022 走看看