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;
        }
    }

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

  • 相关阅读:
    UIStepper
    UIProgressView
    Python——GUI编程 利息计算器 作业9(python programming)
    Python——GUI编程(python programming)
    麻烦的聚餐(最长递增子序列+二分优化)
    奶牛渡河(dp)
    POJ 1182-食物链 [并查集] 《挑战程序设计竞赛》2.4
    [2013百度软件研发笔试题] 求字符串中连续出现同样字符的最大值
    Java OCR tesseract 图像智能字符识别技术
    ORA-00904:&quot;T1&quot;.&quot;AREA_ID&quot; :标识符无效
  • 原文地址:https://www.cnblogs.com/whtt/p/11835094.html
Copyright © 2011-2022 走看看