zoukankan      html  css  js  c++  java
  • springMVC异常处理(自定义异常)HandlerExceptionResolver

    注:本篇的异常主要指的是controller、service和dao层中执行方法抛出的异常。

     一、为什么要处理异常?

      因为如果我们不处理异常,异常信息就会直接抛出给浏览器,于是浏览器页面就直接显示异常信息,这对用户来说是很不友好的。我们应该在发生错误时返回一个友好的错误提示页面展示给用户。

    二,异常处理思路

      当dao或者其他层抛出异常时,异常会向上逐层抛出,最后抛出到浏览器。那么我们就可以在异常抛出到前端控制器(DispatcherServlet)的时候,编写异常处理器对异常进行拦截,经过异常处理器处理异常后,跳转到一个友好的错误提示页面并返回给浏览器

    三、实现步骤

    1.编写自定义异常类

    public class SysException extends Exception {
        private String message;
    
        public SysException(String message) {
            this.message = message;
        }
    
        @Override
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    }
    

    2.编写异常处理器类

    public class SysExceptionResolver implements HandlerExceptionResolver {
        @Override
        public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {
            SysException e = null;
            if (ex instanceof SysException){
                e = (SysException) ex;
            }else {
                e = new SysException("系统正在维护");
            }
    
            ModelAndView mv = new ModelAndView();
            mv.addObject("errorMsg",ex.getMessage());
            mv.setViewName("error");
            return mv;
        }
    }
    

     注意:异常处理器类必须实现HandlerExceptionResolver接口,并实现接口中的方法

    3.配置异常处理器(将异常处理器交给spring容器管理)

    方式一:用xml配置的方式

    在springmvc.xml配置文件中加如bean标签,将刚刚编写的异常处理器类交给spring容器管理。

    <bean id="sysExceptionResolver" class="com.xj.exception.SysExceptionResolver"/>

    方式二:使用注解

    在刚刚编写的异常处理器类上加上Component注解

    例如:

    @Component
    public class SysExceptionResolver implements HandlerExceptionResolver {
    
    }
    

    这样就配置好了。

  • 相关阅读:
    [BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并)
    【匈牙利算法模板】BZOJ1191-超级英雄
    【线段树/区间开平方】BZOJ3211-花神游历各国
    【无源汇有上下界可行流】ACdream1211-Reactor Cooling
    【KMP求最小周期】POJ2406-Power Strings
    【KMP模板】POJ3461-Oulipo
    【费用流】BZOJ1877[SDOI2009]-晨跑
    【最大权闭合子图】BZOJ1497[NOI2006]-最大获利
    【最大流/费用流】BZOJ1834-[ZJOI2010]network 网络扩容
    【Trie图+DP】BZOJ1030[JSOI2007]-文本生成器
  • 原文地址:https://www.cnblogs.com/bear7/p/13298454.html
Copyright © 2011-2022 走看看