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

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

  • 相关阅读:
    js技巧收集(200多个)
    我的博客开张了,欢迎大家前来做客
    认识ASP.NET配置文件Web.config
    C#纯数学方法递归实现货币数字转换中文
    Asp.Net细节性问题技巧精萃(转载)
    ASP.NET2.0+SQL Server2005构建多层应用
    ASP.NET页面间的传值的几种方法(转载)
    介绍几种 ADO.net 中的数据库连接方式
    hdu 1401
    poj 1338 丑数
  • 原文地址:https://www.cnblogs.com/whtt/p/11835094.html
Copyright © 2011-2022 走看看