• 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对象到页面处理异常,重定向主页地址,转发到错误页面,继续向上抛出等等,根据情况处理异常。

  • 相关阅读:
    uniapp项目笔记
    JS的基本数据类型symbol
    javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
    const, let, var的区别
    vue中的computed属性
    微星主板多个硬盘启动顺序
    vue中子父组件传值问题
    Vue 中 ref 的使用
    码云ssh免密码登录
    当在iOS下获取scrollTop时可以获取到,在Android下获取scrollTop一直为0的问题
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/8488220.html
Copyright © 2020-2023  润新知