import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.HttpMediaTypeNotSupportedException;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import org.springframework.web.servlet.NoHandlerFoundException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* @desc: 异常统一拦截处理
* @auth: zhangsy
* @data: 2019/9/3 13:30
*/
@RestControllerAdvice
@ResponseBody
public class GlobalDefultExceptionHandler {
Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* @auth: zhangsy
* @desc: 服务不存在
* @data: 2019/9/3 13:31
* @return: 异常信息
*/
@ExceptionHandler(value = NoHandlerFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public Map errorHandler(HttpServletRequest request, NoHandlerFoundException exception, HttpServletResponse response,Exception e) {
return getExceptionInfo("服务不存在",404,e);
}
/**
* @auth: zhangsy
* @desc: 请求方式不支持
* @data: 2019/9/3 13:31
* @return: 异常信息
*/
@ExceptionHandler(HttpMediaTypeNotSupportedException.class)
public Map errorHandler(HttpServletRequest request, HttpMediaTypeNotSupportedException exception, HttpServletResponse response,Exception e) {
return getExceptionInfo("请求方式有误",1004,e);
}
/**
* @desc: 请求参数缺失
* @auth: zhangsy
* @data: 2019/9/18 14:12
* @return:
*/
@ExceptionHandler(MissingServletRequestParameterException.class)
public Map errorMissingServletRequestParameterExceptionHandler(MissingServletRequestParameterException e) {
return getExceptionInfo("请求缺少参数 " + e.getParameterName(),400,e);
}
/**
* @desc: 请求参数类型错误
* @auth: zhangsy
* @data: 2019/9/18 14:12
* @return:
*/
@ExceptionHandler(MethodArgumentTypeMismatchException.class)
public Map errorMethodArgumentTypeMismatchExceptionHandler(MethodArgumentTypeMismatchException e) {
return getExceptionInfo("参数类型错误 " + e.getParameter().getParameterName(),1003,e);
}
/**
* @auth: zhangsy
* @desc: 请求方式错误
* @data: 2019/9/3 13:31
* @return: 异常信息
*/
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
public Map handleHttpRequestMethodNotSupportedException(Exception e) {
return getExceptionInfo("请求方式不对",405,e);
}
/**
* 总的异常处理
*/
@ExceptionHandler(Exception.class)
public Map handleException(Exception e) {
return getExceptionInfo("error",500,e);
}
/**
* 异常处理响应客户端状态
*/
public Map getExceptionInfo(String msg, Integer resultcode, Exception e){
Map resultDate = new HashMap();
resultDate.put("msg",msg);
resultDate.put("resultcode",resultcode);
logger.error(e.getMessage(),e);
return resultDate;
}
}
最后修改于 2020-03-02 17:18:59
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

