zoukankan      html  css  js  c++  java
  • Spring MVC异常捕获

    处理异常

      处理局部异常:

        也就是单个Controller类中抛出的异常

      处理全局异常:

        处理所有Controller类抛出的异常

    局部异常

      模拟一个异常,当发生异常后跳转到指定页面

      控制器

    @RequestMapping("/one")
        public String one(){
            //模拟一个异常
            if(1==1){
                int sum=5/0;
                return "myform";
            }
            return "index";
        }

      跳转的指定页面

    <html>
    <head>
        <title>异常</title>
    </head>
    <body>
    出现了异常
    </body>
    </html>

    手动创建异常

      手动创建异常,并且指定异常跳转指定页面

      创建两个异常类

    public class nameError extends Exception{
        public nameError() {
        }
    
        public nameError(String message) {
            super(message);
        }
    }
    
    
    public class ageError extends Exception{
        public ageError() {
        }
    
        public ageError(String message) {
            super(message);
        }
    }

      表单

    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <form action="/threeController/one1" method="post">
            账号:<input type="text" name="uname"><br>
            密码:<input type="password" name="upwd"><br>
            <input type="submit" value="提交">
        </form>
    </body>
    </html>

      控制器

    @RequestMapping("/one1")
        public String one1(String uname,Integer upwd) throws nameError, ageError {
            if (!uname.equals("admin")){
                throw new nameError("name不正确!");
            }
            if (upwd>80){
                throw new ageError("age不正确!");
            }
            return "myform";
        }

      大配置文件

    <!--系统异常处理器-->
        <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            <property name="defaultErrorView" value="error"/>
            <property name="exceptionAttribute" value="ex"/>
            <!--定制异常-->
            <property name="exceptionMappings">
                <props>
                    <prop key="error.nameError">nameError</prop>
                    <prop key="error.ageError">ageError</prop>
                </props>
            </property>
        </bean>

    创建异常类(捕获所有异常) 

      异常类

    /**
     * 要让这个类处理所有异常
     */
    @ControllerAdvice
    public class oneController {
        @ExceptionHandler
        public ModelAndView oneController(Exception ex) throws nameError, ageError {
            ModelAndView mv=new ModelAndView();
            mv.setViewName("myform");
            mv.addObject("ex",ex);
            if (ex instanceof nameError){
                throw new nameError("name不正确!");
            }
            if (ex instanceof ageError){
                throw new ageError("age不正确!");
            }
            return mv;
        }
    }

      注意:(在这里大配置文件中的系统异常处理器就没有用了)

  • 相关阅读:
    图形
    附属信息
    文件操作
    字符编码
    Python数据类型之基础记。。。
    python并发编程之多进程
    python并发编程之多进程
    计算机基础之计算机系统的简单了解。
    元类
    基于socketserver模块实现并发tcp/udp
  • 原文地址:https://www.cnblogs.com/whtt/p/11835094.html
Copyright © 2011-2022 走看看