package main import ( "fmt" "github.com/pkg/errors" ) // Response 错误时返回自定义结构 type Response struct { Code ErrCode `json:"code"` // 错误码 Msg string `json:"msg"` // 错误信息 RequestId string `json:"request_id"` // 请求ID } type ErrCode int // 错误码 // 定义 errorCode const ( // ServerError 1开头为服务级错误码 ServerError ErrCode = 10001 ParamBindError ErrCode = 10002 // IllegalDatasetName 2开头为业务级错误码 // 其中数据集管理为201开头 IllegalDatasetName ErrCode = 20101 // 无效的数据集名称 ParamNameError ErrCode = 20102 // 参数name错误 // IllegalPhoneNum 用户管理模块:202开头 IllegalPhoneNum ErrCode = 20201 // 手机号格式不正确 IllegalVerifyCode ErrCode = 20202 // 无效的验证码 PhoneRepeatedRegistered ErrCode = 20203 // 手机号不可重复注册 PhoneIsNotRegistered ErrCode = 20204 // 该手机号未注册 PhoneRepeatedApproved ErrCode = 20205 // 手机号不可重复审批 PhoneIsNotApproved ErrCode = 20206 // 该手机号未审批 // IllegalModelName 预训练模块:203开头 IllegalModelName ErrCode = 20301 // 非法模型名称 ) // 定义 errorCode 对应的文本信息 var errorMsg = map[ErrCode]string{ ServerError: "服务内部错误", ParamBindError: "参数信息有误", IllegalDatasetName: "无效的数据集名称", ParamNameError: "参数name错误", IllegalPhoneNum: "手机号格式不正确", IllegalModelName: "非法模型名称", } // Text 根据错误码获取错误信息 func String(code ErrCode) string { if msg, ok := errorMsg[code]; ok { return msg } return "未知错误码" } // Error 实现 error 接口 func (r *Response) Error() string { return fmt.Sprintf("Code: %d, Msg: %s, RequestId: %s", r.Code, r.Msg, r.RequestId) } // NewCustomError 新建自定义 error 实例化 func NewCustomError(code ErrCode, requestId string) error { return errors.Wrap(&Response{ Code: code, Msg: String(code), RequestId: requestId, }, "custom error") }