zoukankan      html  css  js  c++  java
  • spring MVC 异常处理整理

    一、异常结构

    1.异常由外到内如下:

    web服务器处理异常--->web应用里面web.xml处理异常--->Spring框架处理异常---->控制器注释处理异常
    --->控制器方法里面try处理异常

    二、针对如上图讲解实现方法

    1.Tomcat异常处理:在conf/web.xml里面加入错误页面配置信息。(了解)

    2.Web应用程序:工程下的web.xml配置错误页面信息:

        <error-page>
            <error-code>404</error-code>
            <location>/WEB-INF/jsp/404.jsp</location>
        </error-page>
        
        <error-page>
            <error-code>500</error-code>
            <location>/WEB-INF/jsp/500.jsp</location>
        </error-page>
    
        <error-page>
            <exception-type>
                java.lang.Exception
            </exception-type>
            <location>/WEB-INF/jsp/error.jsp</location>
        </error-page>

    3.Spring框架处理异常:

    <!-- 异常处理器 -->
        <bean 
        class=
    "org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            <!-- 这个name属性作用:将异常类型与错误页面进行对应 -->
            <property name="exceptionMappings">
                <props>
                    <!-- 下面这句的意思:
                        error与前面配置的视图处理器配合,找到error.jsp页面
                        当任何控制器抛出RuntimeException的时候,
                        就转发到error.jsp的页面上 。
                        还可以增加其他类型的异常以及对应的jsp页面,就是下面的这句
                        可以写多个。key里面也可以写自定义异常的完全限定名。-->
                    <prop key="java.lang.RuntimeException">
                        error
                    </prop>
                    <prop key="java.lang.IndexOutOfBoundsException">
                        error1
                    </prop>
                </props>
            </property>
        
        </bean>

    4.控制器注释处理异常:

        @ExceptionHandler
        public String execute(
                HttpServletRequest req,
                Exception e) throws Exception {
            if(e instanceof NullPointerException) {
                req.setAttribute("msg", "空指针喽!");
                return "message";//转发到message页面
            }
            //还可以增加if处理其他类型的异常。。。
            throw e;//若该类型异常处理不了,一定抛出!
        }

    5.最里层的try...catch处理异常方式有很多,例如:返回json对象到页面处理异常,重定向主页地址,转发到错误页面,继续向上抛出等等,根据情况处理异常。

  • 相关阅读:
    构造函数语义学之Default Constructor构建操作
    c++子类继承父类的覆盖问题
    C++中自己理解的一些细节哈
    学习C++所需看的书和顺序
    C++中强制变换之const_cast
    jquery锚点跳转
    关于iPhone X 适配
    input图片上传并显示查看判断图片类型
    jquery操作按钮修改对应input属性
    织梦dedecms会员中心分类管理无法修改、删除分类名
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/8488220.html
Copyright © 2011-2022 走看看