全局异常处理2-HandlerExceptionResolver

package com.suncl.test2spring.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.MappingJackson2JsonView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 全局异常处理-HandlerExceptionResolver方式
 */
@Slf4j
@Component
public class GlobalExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        ApiResult result;
        ModelAndView model = new ModelAndView(new MappingJackson2JsonView());
        log.error(e.getMessage(), e);
        if (e instanceof BizException) {
            result = new ApiResult(ResultCode.BIZ_ERROR.getCode(),e.getMessage());
        }else{
            result = new ApiResult(ResultCode.UNKNOWN_ERROR) ;
        }
        model.addObject("code",result.getCode());
        model.addObject("msg",result.getMsg());
        return model;
    }
}

 

 

注意要点为

  1. 实现 HandlerExceptionResolver
  2. 加入spring容器 这里使用@Component
  3. 返回的是 ModelAndView
posted @ 2020-01-20 10:34  reload  阅读(233)  评论(0编辑  收藏  举报