错误码
错误码是给调用方的程序“看”的,好让开发调用方的开发者能准确高效地根据错误码做出对 End User 友好的、优雅的响应。
错误码不能直接抛给 End User。
Luwak 的调用方可能是 API 网关,也可能是 iOS、Android 客户端。
分段
Luwak 返回的错误码,由多个段组成:
序号 | 含义 |
---|---|
第0段 | 责任方,必选,谁做出调整才能令错误消失 |
第1段 | 一级错误类型,必选 |
第2段 | 二级错误类型,可选 |
第3段 | 出错的关键 Key,可选 |
责任方
简写 | 全称 | 场景举例 |
---|---|---|
EU | End User | 唯一键冲突:注册用户时,用户名已存在,显然这需要End User重新换个名字注册,其它人再怎么努力也不能让这个错误消失 |
AD | App Developer | RPC报文不完整,缺少method字段,显然这是调用方的代码问题,End User对此无能为力 |
SP | Service Provider | JavaScript语法错误,这是Service提供者修改JS代码才能解决的 |
BE | Biz Error | JavaScript通过returnError抛出的业务错误(bug: JS也有可能抛出调用支付宝接口失败这样的系统错误,暂时统一视为业务错误吧) |
OPS | Operations | 如数据库连接不上,这是要数据库运维来解决的 |
Luwak | Luwak Developer | Luwak内部Bug,比如未知的异常 |
End User (EU)
EU.Validator.DataTypeError
: 零代码零配置参数映射到数据库表列,参数类型不符合数据库表中定义的列类型EU.Constraint.PK.NotFound
: 根据主键查询、修改、删除时,找不到项EU.Constraint.PK.Duplicated
: 根据主键插入、修改时,存在主键重复项EU.Constraint.UK.Duplicated
: 插入、修改时,存在唯一键重复项EU.Constraint.FK.NotFound
: 查询、插入、修改、删除时,找不到关联的外键项
Biz Error (BE)
BE.CheckPoint.{ERROR_CODE_FROM_JS}
: 插入、更新、删除前没有通过检查BE.PreDataProcessor.{ERROR_CODE_FROM_JS}
: 插入、更新、删除前数据预处理出错BE.PostAction.{ERROR_CODE_FROM_JS}
: 插入、更新、删除、读取后,JavaScript 返回错误BE.CustomService.{ERROR_CODE_FROM_JS}
: 自定义 RPC 服务,JavaScript 返回错误
App Developer (AD)
AD.ParseError
: 语法解析错误,服务端接收到无效的json文本AD.InvalidRequest
: 无效请求,服务端接收到无效的请求对象,例如不符合 JSON-RPC 2.0 协议规范AD.MethodNotFound
: 没找到自定义的方法,或者该方法自动推导映射的数据库、表不存在AD.MissingParameter
: 缺少参数,虽然params是可选的,但是大部分零代码零配置需要传参AD.InvalidParameter
: 无效的参数,例如不符合零代码零配置对参数的约定AD.RequestIdUsed
: 唯一请求ID在某个时间范围内仅允许使用一次AD.InvalidTimestamp
: 时间戳是否与服务器当前时间相差不超过一定的阈值,或者不符合格式要求
Service Provider (SP)
SP.Script.ParseError
: JavaScript 脚本语法解析错误SP.Script.ExecutionError
: JavaScript 脚本 luwak.daoSP.Script.Timeout
: JavaScript 脚本超时错误,默认 30 秒超时SP.SQL.ParseError
: SQL语法错误,检查自定义的SQLSP.SQL.ExecutionError
: 数据库执行SQL错误,检查自定义的SQL
Operations (OPS)
OPS.LicenseExpired
: 许可证过期OPS.InvalidLicense
: 无效的许可证OPS.DBConnectError
: DB connection errorOPS.RedisConnectError
: Redis connect errorOPS.MQConnectError
: Message Queue connect error
Luwak Developer (Luwak)
Luwak.Exception
: Luwak 内部错误