Documentation
¶
Overview ¶
Package apperr 定义统一业务错误:HTTP 状态 + 业务码 + 消息 + 原始错误链。 业务码遵循阿里巴巴《Java开发手册(泰山版)》A/B/C 三级错误码体系(见 codes.go)。 与 webiris.OK/Fail 配合,业务代码返回 apperr.Error,由中间件统一转响应。
Index ¶
- func HTTPStatus(code Code) int
- func Is(err error, code Code) bool
- type Code
- type Error
- func From(err error) *Error
- func New(code Code, message string) *Error
- func NewWithStatus(httpStatus int, code Code, message string) *Error
- func Newf(code Code, format string, args ...interface{}) *Error
- func Wrap(err error, code Code, message string) *Error
- func WrapWithStatus(err error, httpStatus int, code Code, message string) *Error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HTTPStatus ¶ added in v1.9.0
HTTPStatus 返回错误码对应的默认 HTTP 状态;未注册时返回 500。
Types ¶
type Code ¶
type Code string
Code 是业务错误码(手册 A/B/C 分级,如 "A0400" 参数错误、"B0001" 系统错误)。
const ( // CodeUserError 用户端错误(一级)。 CodeUserError Code = "A0001" // CodeUserRegisterError 用户注册错误。 CodeUserRegisterError Code = "A0100" // CodeUserNameInvalid 用户名校验失败。 CodeUserNameInvalid Code = "A0110" // CodeUserNameExists 用户名已存在。 CodeUserNameExists Code = "A0111" // CodePasswordInvalid 密码校验失败。 CodePasswordInvalid Code = "A0120" // CodeVerifyCodeInvalid 校验码输入错误。 CodeVerifyCodeInvalid Code = "A0130" // CodeUserInfoInvalid 用户基本信息校验失败。 CodeUserInfoInvalid Code = "A0150" // CodePhoneFormatInvalid 手机格式校验失败。 CodePhoneFormatInvalid Code = "A0151" // CodeEmailFormatInvalid 邮箱格式校验失败。 CodeEmailFormatInvalid Code = "A0153" // CodeUserLoginError 用户登录异常。 CodeUserLoginError Code = "A0200" // CodeUserAccountNotExists 用户账户不存在。 CodeUserAccountNotExists Code = "A0201" // CodeUserAccountFrozen 用户账户被冻结。 CodeUserAccountFrozen Code = "A0202" // CodeUserPasswordWrong 用户密码错误。 CodeUserPasswordWrong Code = "A0210" // CodeUserLoginExpired 用户登录已过期。 CodeUserLoginExpired Code = "A0230" // CodeUserVerifyCodeWrong 用户验证码错误。 CodeUserVerifyCodeWrong Code = "A0240" // CodeAccessPermissionError 访问权限异常。 CodeAccessPermissionError Code = "A0300" CodeAccessUnauthorized Code = "A0301" // CodeAPINoPermission 无权限使用 API。 CodeAPINoPermission Code = "A0312" // CodeUserAccessBlocked 用户访问被拦截。 CodeUserAccessBlocked Code = "A0320" // CodeUserSignatureError 用户签名异常。 CodeUserSignatureError Code = "A0340" // CodeRSASignatureError RSA 签名错误。 CodeRSASignatureError Code = "A0341" // CodeRequestParamError 用户请求参数错误。 CodeRequestParamError Code = "A0400" // CodeInvalidUserInput 无效的用户输入。 CodeInvalidUserInput Code = "A0402" // CodeRequiredParamEmpty 请求必填参数为空。 CodeRequiredParamEmpty Code = "A0410" // CodeParamOutOfRange 请求参数值超出允许的范围。 CodeParamOutOfRange Code = "A0420" // CodeParamFormatMismatch 参数格式不匹配。 CodeParamFormatMismatch Code = "A0421" // CodeAmountExceedsLimit 金额超出限制。 CodeAmountExceedsLimit Code = "A0424" // CodeJSONParseFailed 请求 JSON 解析失败。 CodeJSONParseFailed Code = "A0427" // CodeUserOperationError 用户操作异常。 CodeUserOperationError Code = "A0440" // CodeRequestServiceError 用户请求服务异常。 CodeRequestServiceError Code = "A0500" // CodeRequestRateLimited 请求次数超出限制。 CodeRequestRateLimited Code = "A0501" // CodeRequestConcurrencyLimited 请求并发数超出限制。 CodeRequestConcurrencyLimited Code = "A0502" // CodeDuplicateRequest 用户重复请求。 CodeDuplicateRequest Code = "A0506" // CodeUploadFileError 用户上传文件异常。 CodeUploadFileError Code = "A0700" // CodeUploadFileTypeMismatch 用户上传文件类型不匹配。 CodeUploadFileTypeMismatch Code = "A0701" // CodeUploadFileTooLarge 用户上传文件太大。 CodeUploadFileTooLarge Code = "A0702" )
const ( // CodeSystemError 系统执行出错(一级)。 CodeSystemError Code = "B0001" // CodeSystemTimeout 系统执行超时。 CodeSystemTimeout Code = "B0100" // CodeSystemDisasterTriggered 系统容灾功能被触发。 CodeSystemDisasterTriggered Code = "B0200" // CodeSystemRateLimited 系统限流。 CodeSystemRateLimited Code = "B0210" // CodeSystemDegraded 系统功能降级。 CodeSystemDegraded Code = "B0220" // CodeSystemResourceError 系统资源异常。 CodeSystemResourceError Code = "B0300" // CodeSystemResourceExhausted 系统资源耗尽。 CodeSystemResourceExhausted Code = "B0310" // CodeConnectionPoolExhausted 系统连接池耗尽。 CodeConnectionPoolExhausted Code = "B0314" // CodeThreadPoolExhausted 系统线程池耗尽。 CodeThreadPoolExhausted Code = "B0315" )
const ( // CodeThirdPartyError 调用第三方服务出错(一级)。 CodeThirdPartyError Code = "C0001" // CodeMiddlewareError 中间件服务出错。 CodeMiddlewareError Code = "C0100" // CodeMessageServiceError 消息服务出错。 CodeMessageServiceError Code = "C0120" // CodeMessagePublishFailed 消息投递出错。 CodeMessagePublishFailed Code = "C0121" // CodeMessageConsumeFailed 消息消费出错。 CodeMessageConsumeFailed Code = "C0122" // CodeCacheServiceError 缓存服务出错。 CodeCacheServiceError Code = "C0130" // CodeConfigServiceError 配置服务出错。 CodeConfigServiceError Code = "C0140" // CodeThirdPartyTimeout 第三方系统执行超时。 CodeThirdPartyTimeout Code = "C0200" // CodeDatabaseTimeout 数据库服务超时。 CodeDatabaseTimeout Code = "C0250" // CodeDatabaseError 数据库服务出错。 CodeDatabaseError Code = "C0300" // CodeTableNotExists 表不存在。 CodeTableNotExists Code = "C0311" // CodePrimaryKeyConflict 主键冲突。 CodePrimaryKeyConflict Code = "C0341" // CodeNotifyServiceError 通知服务出错。 CodeNotifyServiceError Code = "C0500" // CodeMailNotifyFailed 邮件提醒服务失败。 CodeMailNotifyFailed Code = "C0503" )
const ( // CodeOK 一切正常(手册:00000)。 CodeOK Code = "00000" )
type Error ¶
Error 是统一业务错误。 Message 会直接暴露给调用方,不得包含敏感信息;原始错误通过 Cause 保留在服务端日志。
func NewWithStatus ¶ added in v1.9.0
NewWithStatus 创建业务错误并显式指定 HTTP 状态。
func WrapWithStatus ¶ added in v1.9.0
WrapWithStatus 包装原始错误并显式指定 HTTP 状态。
Click to show internal directories.
Click to hide internal directories.