zoukankan      html  css  js  c++  java
  • SpringMvc的自定义异常,交给SpringMvc管理

    1.编写要给自定义异常类

    public class MyCustomException extends Exception {
        //定义成员变量: 所有的异常类都具备
        private String message;//错误原因
        //自定义异常类必须有message带参构造
        public MyCustomException(String message) {
            this.message = message;
        }
    
        @Override
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    }

    2.springmvc管理异常的核心配置类  HandlerExceptionResolver 

    /**
     * 自定义全局异常处理器: 实现异常处理器的接口HandlerExceptionResolver
     *  判断是否是自定义异常
     *  如果是,取出自定义异常中错误信息,向用户展示
     *  如果不是,给用户一个统一的错误提示: "  非常抱歉,系统出现重大错误,已邮件告知系统管理员处理,请您耐心等待,稍后尝试。"
     */
    public class MyCustomExceptionResolver implements HandlerExceptionResolver {
    
        /**
         * 拦截全局异常的
         * @param request 请求对象
         * @param response 响应对象
         * @param handler 被拦截的处理器Controller的方法
         * @param ex 出现了什么异常
         */
        @Override
        public ModelAndView resolveException(HttpServletRequest request,
                                             HttpServletResponse response,
                                             Object handler, Exception ex) {
            //判断是否是自定义异常
            //instanceof 判断当前对象的类型是否是指的类,前提判断对象与该类存在继承关系
            MyCustomException myCustomException = null;
            if (ex instanceof MyCustomException) {
                //如果是,取出自定义异常中错误信息,向用户展示
                 myCustomException = (MyCustomException) ex;
            } else {
                //向日志文件中,输出异常信息,供开发人员排查解决问题
                //ex.printStackTrace();
                //如果不是,给用户一个统一的错误提示:
                myCustomException = new MyCustomException("非常抱歉,系统出现重大错误,已邮件告知系统管理员处理,请您耐心等待,稍后尝试");
            }
            String message = myCustomException.getMessage();
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.addObject("message", message);//错误原因
            modelAndView.setViewName("error");//错误页面视图
    
            return modelAndView;
        }
    }

    然后将此类注入到spring中

    <bean id="myCustomExceptionResolver" class="com.spring.myerror.MyCustomExceptionResolver"></bean>

    这个时候抛出的异常就会被SpringMvc管理,自定义抛出页面。

  • 相关阅读:
    JavaScript可以做嵌入式开发了
    将指定字符串按指定长度进行剪切
    ASP.NET MVC Controller向View传值的几种方式
    SqlServer将数据库中的表复制到另一个数据库
    PAYPAL 支付,sandbox测试的时候遇到异常:请求被中止: 未能创建 SSL/TLS 安全通道,以及解决方法。
    c# ref与out的区别
    浅谈Tuple之C#4.0新特性
    CentOS7系列学习--修改用户密码
    关于页面多个ajax请求阻塞的问题
    关于overflow的学习
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13669266.html
Copyright © 2011-2022 走看看