refactor: 统一错误消息数据源,优化错误码与映射表管理
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m36s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m36s
主要改动: - 改造 errors.New() 和 Wrap() 函数签名为可变参数,优先使用 errorMessages 映射表 - 添加 allErrorCodes 注册表和 init() 启动时校验,确保错误码与映射表一致 - 添加 TestAllCodesHaveMessages 和 TestNoOrphanMessages 测试防止映射表腐化 - 清理 109 处与映射表一致的冗余硬编码(service 层) - 保留业务特定消息覆盖能力 新增 API 用法: - errors.New(errors.CodeUnauthorized) // 使用映射表默认消息 - errors.New(errors.CodeNotFound, "提现申请不存在") // 覆盖为自定义消息
This commit is contained in:
@@ -32,10 +32,16 @@ func (e *AppError) Unwrap() error {
|
||||
}
|
||||
|
||||
// New 创建新的 AppError
|
||||
func New(code int, message string) *AppError {
|
||||
// 如果消息为空,使用默认消息
|
||||
if message == "" {
|
||||
message = GetMessage(code, "zh-CN")
|
||||
// 优先使用 errorMessages 映射表中的消息,允许通过可选参数覆盖
|
||||
// 用法:
|
||||
// - errors.New(errors.CodeNotFound) // 使用映射表默认消息
|
||||
// - errors.New(errors.CodeNotFound, "提现申请不存在") // 覆盖为自定义消息
|
||||
func New(code int, customMsg ...string) *AppError {
|
||||
// 默认从映射表获取消息
|
||||
message := GetMessage(code, "zh-CN")
|
||||
// 如果提供了自定义消息且非空,则覆盖
|
||||
if len(customMsg) > 0 && customMsg[0] != "" {
|
||||
message = customMsg[0]
|
||||
}
|
||||
return &AppError{
|
||||
Code: code,
|
||||
@@ -44,10 +50,14 @@ func New(code int, message string) *AppError {
|
||||
}
|
||||
|
||||
// Wrap 用错误码和消息包装现有错误
|
||||
func Wrap(code int, message string, err error) *AppError {
|
||||
// 如果消息为空,使用默认消息
|
||||
if message == "" {
|
||||
message = GetMessage(code, "zh-CN")
|
||||
// 优先使用 errorMessages 映射表中的消息,允许通过可选参数覆盖
|
||||
// 用法:
|
||||
// - errors.Wrap(errors.CodeDatabaseError, originalErr) // 使用映射表默认消息
|
||||
// - errors.Wrap(errors.CodeDatabaseError, originalErr, "查询用户失败") // 覆盖为自定义消息
|
||||
func Wrap(code int, err error, customMsg ...string) *AppError {
|
||||
message := GetMessage(code, "zh-CN")
|
||||
if len(customMsg) > 0 && customMsg[0] != "" {
|
||||
message = customMsg[0]
|
||||
}
|
||||
return &AppError{
|
||||
Code: code,
|
||||
|
||||
Reference in New Issue
Block a user