全局异常处理类:GlobalExceptionHandler
/**
* 全局异常处理器
*/
@RestControllerAdvice
public class GlobalExceptionHandler {
private Logger logger = LoggerFactory.getLogger(getClass());
/**
* 处理自定义异常
*/
@ExceptionHandler(BusinessException.class)
public CommonResponse handleRRException(BusinessException e){
return CommonResponse.fail(e.getCode(),e.getMessage());
}
@ExceptionHandler(NoHandlerFoundException.class)
public CommonResponse handlerNoFoundException(Exception e) {
logger.error(e.getMessage(), e);
return CommonResponse.fail(ResponseStatus.UNABLE_FIND_RESOURCES, "路径不存在,请检查路径是否正确");
}
@ExceptionHandler(DuplicateKeyException.class)
public CommonResponse handleDuplicateKeyException(DuplicateKeyException e){
logger.error(e.getMessage(), e);
return CommonResponse.fail("路径不存在,请检查路径是否正确");
}
@ExceptionHandler(AuthorizationException.class)
public CommonResponse handleAuthorizationException(AuthorizationException e){
logger.error(e.getMessage(), e);
return CommonResponse.fail(ResponseStatus.INVALID_TOKEN, "没有权限,请联系管理员授权");
}
@ExceptionHandler(Exception.class)
public CommonResponse handleException(Exception e){
logger.error(e.getMessage(), e);
return CommonResponse.fail();
}
}
自定义异常:BusinessException
/**
* 自定义异常
*/
public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 1L;
private String msg;
private int code = 500;
public BusinessException(String msg) {
super(msg);
this.msg = msg;
}
public BusinessException(String msg, Throwable e) {
super(msg, e);
this.msg = msg;
}
public BusinessException(String msg, int code) {
super(msg);
this.msg = msg;
this.code = code;
}
public BusinessException(String msg, int code, Throwable e) {
super(msg, e);
this.msg = msg;
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
对应的响应对象在文章:(59条消息) Controller公共响应_我的芒果的博客-CSDN博客