跳到主要内容

错误码

错误码是给调用方的程序“看”的,好让开发调用方的开发者能准确高效地根据错误码做出对 End User 友好的、优雅的响应。

错误码不能直接抛给 End User。

Luwak 的调用方可能是 API 网关,也可能是 iOS、Android 客户端。

分段

Luwak 返回的错误码,由多个段组成:

序号含义
第0段责任方,必选,谁做出调整才能令错误消失
第1段一级错误类型,必选
第2段二级错误类型,可选
第3段出错的关键 Key,可选

责任方

简写全称场景举例
EUEnd User唯一键冲突:注册用户时,用户名已存在,显然这需要End User重新换个名字注册,其它人再怎么努力也不能让这个错误消失
ADApp DeveloperRPC报文不完整,缺少method字段,显然这是调用方的代码问题,End User对此无能为力
SPService ProviderJavaScript语法错误,这是Service提供者修改JS代码才能解决的
BEBiz ErrorJavaScript通过returnError抛出的业务错误(bug: JS也有可能抛出调用支付宝接口失败这样的系统错误,暂时统一视为业务错误吧)
OPSOperations如数据库连接不上,这是要数据库运维来解决的
LuwakLuwak DeveloperLuwak内部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.dao
  • SP.Script.Timeout: JavaScript 脚本超时错误,默认 30 秒超时
  • SP.SQL.ParseError: SQL语法错误,检查自定义的SQL
  • SP.SQL.ExecutionError: 数据库执行SQL错误,检查自定义的SQL

Operations (OPS)

  • OPS.LicenseExpired: 许可证过期
  • OPS.InvalidLicense: 无效的许可证
  • OPS.DBConnectError: DB connection error
  • OPS.RedisConnectError: Redis connect error
  • OPS.MQConnectError: Message Queue connect error

Luwak Developer (Luwak)

  • Luwak.Exception: Luwak 内部错误