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; } }
注意要点为
- 实现 HandlerExceptionResolver
- 加入spring容器 这里使用@Component
- 返回的是 ModelAndView