欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC全局异常处理

程序员文章站 2022-04-21 23:49:05
...

在日常的开发过程中,你肯定遇到过页面报500的问题,这个时候如果我想一想就会觉得害怕,我们的项目如果真的在线上出现这样的问题,有时候,问题就非常严重,特别是看到页面的人心怀叵测。因为我们项目的个别包名就会直接暴露在外面,这样就给了那些人钻空子的机会,今天就来解决这个问题。

全局异常处理

  1. 在项目中添加一个类,这个类实现接口org.springframework.web.servlet.HandlerExceptionResolver,然后实现其中的ModelAndView resolveException(HttpServletRequest, HttpServletResponse, Object, Exception);方法,如:
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.HandlerExceptionResolver;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.view.json.MappingJacksonJsonView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    @Component
    @Slf4j
    public class ExceptionResolver implements HandlerExceptionResolver {
        @Override
        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
            log.error("Exception in:" + request.getRequestURI(), ex);
            ModelAndView modelAndView = new ModelAndView(new MappingJacksonJsonView());// jackson 1.x
            //ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView());// jackson 2.x
            modelAndView.addObject("status", ResponseCode.ERROR.getCode());
            modelAndView.addObject("message", "接口异常,详情请查看日志中的异常信息");
            modelAndView.addObject("data",ex.toString());
            return modelAndView;
        }
    }
    
  2. 。。。