为了规范输出系统错误码,java中一般统一对错误码进行定义、管理和使用
如:
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ErrorMessageEnum {
// 业务错误
DA_USER_NOT_EXIST(30001, "数据认证,未查询到该用户或用户状态异常,请联系管理员"),
PARAM_ERROR(30002, "参数校验失败: {0}"),
PAYMENT_UNLOCK_ERROR(30003, "支付单解锁失败"),
LIMIT_ERROR(30002, "今日人脸识别次数已达上限(20次)"),
// 加解密、验签、token 等相关错误
NO_USER_MSG(402, "无用户信息"),
TOKEN_IS_MISSING(401, "Token is missing"),
INVALID_TOKEN(401, "Invalid token"),
INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
VALIDATE_SIGNATURE_ERROR(40001,"签名验证错误"),
PARSE_XML_ERROR(40002,"xml解析失败"),
COMPUTE_SIGNATURE_ERROR(40003,"sha加密生成签名失败"),
ILLEGAL_AES_KEY(40004,"SymmetricKey非法"),
VALIDATE_CORP_ID_ERROR(40005,"corpId校验失败"),
ENCRYPT_AES_ERROR(40006,"aes加密失败"),
DECRYPT_AES_ERROR(40007,"aes解密失败"),
ILLEGAL_BUFFER(40008,"解密后得到的buffer非法"),
;
public final Integer errorCode;
public final String errorMessage;
}
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ErrorMessageEnum {
// 业务错误
DA_USER_NOT_EXIST(30001, "数据认证,未查询到该用户或用户状态异常,请联系管理员"),
PARAM_ERROR(30002, "参数校验失败: {0}"),
PAYMENT_UNLOCK_ERROR(30003, "支付单解锁失败"),
LIMIT_ERROR(30002, "今日人脸识别次数已达上限(20次)"),
// 加解密、验签、token 等相关错误
NO_USER_MSG(402, "无用户信息"),
TOKEN_IS_MISSING(401, "Token is missing"),
INVALID_TOKEN(401, "Invalid token"),
INTERNAL_SERVER_ERROR(500, "Internal Server Error"),
VALIDATE_SIGNATURE_ERROR(40001,"签名验证错误"),
PARSE_XML_ERROR(40002,"xml解析失败"),
COMPUTE_SIGNATURE_ERROR(40003,"sha加密生成签名失败"),
ILLEGAL_AES_KEY(40004,"SymmetricKey非法"),
VALIDATE_CORP_ID_ERROR(40005,"corpId校验失败"),
ENCRYPT_AES_ERROR(40006,"aes加密失败"),
DECRYPT_AES_ERROR(40007,"aes解密失败"),
ILLEGAL_BUFFER(40008,"解密后得到的buffer非法"),
;
public final Integer errorCode;
public final String errorMessage;
}
在Java中,自定义错误码通常通过枚举(enum)类型实现,每个错误码对应一个具体的错误信息。以下是常见的设计方法和示例:
基础设计
错误码通常以整数形式定义,配合错误描述信息。
public enum ErrorCode {
SUCCESS(0, "操作成功"),
INVALID_INPUT(1001, "无效的输入"),
DATABASE_ERROR(2001, "数据库错误"),
NETWORK_ERROR(3001, "网络错误");
// 代码段省略实现细节
}
每个枚举常量包含错误码(code)和错误描述(message),可通过方法获取具体信息:
errorCode.getCode() // 获取错误码
errorCode.getMessage() // 获取错误描述
注意事项
- 唯一性:建议采用项目代码+模块代码+具体错误的编码方式(如
项目代码_模块代码_错误序号
),避免重复。 - 可扩展性:新增错误码时,需确保代码唯一性,可通过工具或约定规避冲突。
- 格式规范:可采用纯数字、字符串或组合编码(如
模块代码+序号
),需保证易读性和可记忆性。