SpringMVC全局异常处理

2018-05-27  本文已影响9人  帅可儿妞

在日常的开发过程中,你肯定遇到过页面报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. 。。。
上一篇下一篇

猜你喜欢

热点阅读