importjava.io.IOException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.http.HttpOutputMessage;importorg.springframework.http.MediaType;importorg.springframework.http.converter.HttpMessageConverter;importorg.springframework.http.converter.HttpMessageNotWritableException;importorg.springframework.http.server.ServletServerHttpResponse;importorg.springframework.web.servlet.HandlerExceptionResolver;importorg.springframework.web.servlet.ModelAndView;importcom.xxx.common.bean.JsonResultBean;importcom.xxx.common.util.EifiniConstant;importcom.xxx.common.exception.TokenException;public class TokenExceptionResolver implementsHandlerExceptionResolver{//json转换器//将异常信息转json
private HttpMessageConverterjsonMessageConverter;public HttpMessageConvertergetJsonMessageConverter() {returnjsonMessageConverter;
}//依赖注入三种方式之一setter注入
public voidsetJsonMessageConverter(
HttpMessageConverterjsonMessageConverter) {this.jsonMessageConverter =jsonMessageConverter;
}
@OverridepublicModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
TokenException tokenException;if(ex instanceofTokenException){
tokenException=(TokenException)ex;//异常信息解析
HttpOutputMessage outputMessage = newServletServerHttpResponse(response);try{//将exceptionResultInfo对象转成json输出,这里使用spring异常处理的工具
jsonMessageConverter.write(newJsonResultBean(EifiniConstant.ERROR,tokenException.getMessage()), MediaType.APPLICATION_JSON, outputMessage);
}catch(HttpMessageNotWritableException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}else{//tokenException = new TokenException("未知错误");
}return newModelAndView();
}
}