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