错误定义
错误定义一般包含错误编码和错误信息,在很多开放平台中都有对错误编码的定义。定义错误编码可以规范系统中错误信息的统一处理。错误的定义一般是针对业务异常的。如添加用户时用户手机号错误,或实名认证时实名认证不通过等。
定义错误编码的作用在于前端可以通过错误编码对某些错误做特殊处理。
错误定义
错误信息应使用枚举定义。
public interface ErrorInfo {
/**
* 获取错误编码
*
* @return 错误编码
*/
String getErrorCode();
/**
* 获取错误信息
*
* @return 错误信息
*/
String getErrorMessage();
}
以下是一个错误定义的具体示例
public enum PermissionError implements ErrorInfo {
/**
* 前缀4000104
*/
PERMISSION_NOT_EXIST(PermissionError.PREFIX + "01", "权限不存在"),
PERMISSION_CODE_EXIST(PermissionError.PREFIX + "02", "权限编码已存在"),
;
public static final String PREFIX = "PERM_";
@Getter
private final String errorCode;
@Getter
private final String errorMessage;
PermissionError(String errorCode, String errorMessage) {
this.errorCode = errorCode;
this.errorMessage = errorMessage;
}
}
其中 PermissionError.PREFIX
是错误编码的一个前缀,不同的模块应使用不同的前缀。
使用范例
在定义业务异常时可以提供一个直接传入错误信息的构造函数,在抛出异常时,就可以直接使用错误信息枚举了,如下
通用异常信息定义
通用业务异常定义
public class ServiceException extends RuntimeException {
/**
* 错误编码
*/
@Getter
private final String errorCode;
public ServiceException(String message) {
super(message);
this.errorCode = CommonError.SERVICE_ERROR.getErrorCode();
}
public ServiceException(String errorCode, String message) {
super(message);
this.errorCode = errorCode;
}
public ServiceException(String errorCode, String message, Throwable cause) {
super(message, cause);
this.errorCode = errorCode;
}
public ServiceException(ErrorInfo errorInfo) {
super(errorInfo.getErrorMessage());
this.errorCode = errorInfo.getErrorCode();
}
public ServiceException(ErrorInfo errorInfo, Throwable cause) {
super(errorInfo.getErrorMessage(), cause);
this.errorCode = errorInfo.getErrorCode();
}
}
throw new ServiceException(PermissionError.PERMISSION_NOT_EXIST)