springMVC异常处理

2021-04-18 01:26

阅读:686

标签:sage   bean   str   response   imp   void   执行   ceo   dao   

注:本篇的异常主要指的是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 {

}

 

这样就配置好了。

 

springMVC异常处理

标签:sage   bean   str   response   imp   void   执行   ceo   dao   

原文地址:https://www.cnblogs.com/bear7/p/13298454.html


评论


亲,登录后才可以留言!