SuperAPI AI 工具集

go-error

通用与其它

查看项目

更新于 10-16 05:04

技能介绍

用途:为 Go 项目的模块级错误包(internal/modules/<module>/errs/errs.go)新增或扩展自定义带类型错误,并配套翻译条目。

主要能力:按 brickserrs.New("<MODULE><NN>", "<message>", http.<Status>, nil) 模式定义导出的错误变量;为携带字段级细节的校验错误添加 NewXxxValidationError(details []brickserrs.Detail) *brickserrs.Error 辅助构造函数,复用已有变量的 .Code、.Message、.Status;错误码采用 <MODULE><NN> 格式,单数字补零(CATALOG_01),双数字不补零(CATALOG_10),模块内保持唯一。

使用方式:先确定目标模块、错误变量名(Err 加 PascalCase 域名短语)、全小写消息与 HTTP 状态,再打开目标 errs.go 提取该模块前缀已有错误码并分配下一个顺序码,插入模块 var (...) 块并保持既有域分组排序;使用处返回 errs.ErrXxx 而非裸 errors.New。新增错误必须在 locales/en.json 的 errors 键下以错误码为键、首字母大写的用户可见句子为值添加翻译,若存在其他语言文件(如 locales/pt_BR.json)也需同步添加。完成后运行 make lint 与 make nilaway。

限制:不要新建错误包,使用模块内 errs;同一模块内不得重复错误码;存在带类型领域错误时不要向传输层返回持久化或基础设施相关的原始错误;错误消息暴露后保持稳定;brickserrs.New() 内消息始终小写,用户可见大写形式由语言文件提供;文件含结构体方法时不要新增独立函数,改用私有方法;新错误缺少语言条目不得合并。