java自定义错误码设计

为了规范输出系统错误码,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() // 获取错误描述  

注意事项

  1. 唯一性‌:建议采用项目代码+模块代码+具体错误的编码方式(如项目代码_模块代码_错误序号),避免重复。 ‌
  2. 可扩展性‌:新增错误码时,需确保代码唯一性,可通过工具或约定规避冲突。 ‌
  3. 格式规范‌:可采用纯数字、字符串或组合编码(如模块代码+序号),需保证易读性和可记忆性。 ‌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值