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管理,自定义抛出页面。

  • 相关阅读:
    技术学到多厉害,才能顺利进入BAT?
    从程序员之死看 IT 人士如何摆脱低情商诅咒
    《wifi加密破解论文》翻译介绍-wifi不再安全
    老司机带你检测相似图片
    ArcGIS水文分析实战教程(15)库容和淹没区计算
    Oracle使用游标查询所有数据表备注
    浅谈矩阵变换——Matrix
    机器学习故事汇-决策树算法
    Catalan数应用整理
    匈牙利算法 cogs 886. [USACO 4.2] 完美的牛栏
  • 原文地址:https://www.cnblogs.com/xiaozhang666/p/13669266.html
Copyright © 2011-2022 走看看