package com.common.aspect;
|
|
|
import com.common.core.beans.Result;
|
import com.common.core.enums.ResultCodeEnum;
|
import com.common.core.exception.BizException;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.http.HttpStatus;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.core.MethodParameter;
|
import org.springframework.http.MediaType;
|
import org.springframework.http.server.ServerHttpRequest;
|
import org.springframework.http.server.ServerHttpResponse;
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
/**
|
* 全局异常处理
|
*/
|
@RestControllerAdvice(basePackages = {
|
"com.deloitte.system.controller"})
|
@Slf4j
|
public class CustomResponseAdvice {
|
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
//定义不同的方法处理不同类型的异常
|
|
|
@ExceptionHandler(Error.class)
|
public Result<Object> baseErrorHandler(HttpServletRequest request, HttpServletResponse response, Error e) {
|
log.error(e.getMessage(),e);
|
response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);
|
return Result.respErr(ResultCodeEnum.RT_ERROR);
|
}
|
|
@ExceptionHandler(OutOfMemoryError.class)
|
public Result<Object> baseErrorHandler(HttpServletRequest request, HttpServletResponse response, OutOfMemoryError e) {
|
log.error(e.getMessage(),e);
|
response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);
|
return Result.respErr(ResultCodeEnum.RT_ERROR);
|
}
|
|
@ExceptionHandler(Exception.class)
|
public Result<Object> errorHandler(HttpServletRequest request, HttpServletResponse response, Exception e) {
|
log.error(e.getMessage(),e);
|
response.setStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR);
|
return Result.respErr(ResultCodeEnum.RT_ERROR);
|
}
|
|
@ExceptionHandler({BizException.class})
|
@ResponseBody
|
public Result<String> handleBusinessException(HttpServletRequest request, HttpServletResponse response, BizException e){
|
log.error(e.getMessage(),e);
|
return Result.resp(e.getCode(), e.getMessage());
|
}
|
|
@ExceptionHandler({MethodArgumentNotValidException.class})
|
@ResponseBody
|
public Result<String> handleException(MethodArgumentNotValidException e){
|
log.error(e.getMessage(),e);
|
return Result.resp(ResultCodeEnum.RT_PARAM_ERROR);
|
}
|
}
|