错误状态码表
错误状态码为5位整型数值。所有整万的值保留。
扩展状态码为英文状态码,参考阿里的错误码,大部分切换到英文状态码,有更好的可识别性,例如云服务ESC 。
公司历史项目原因,目前暂时只采用数值状态码。如果后续开发中涉及到异常没有对应的错误状态码,找到对应的分类表后追加记录。
1. 错误码维护说明
不能修改已有的状态码。
不能删除已有的状态码。
在添加新的状态码前,先检查一下是否会重复定义。(ctrl + f 在本页面搜索下)
如果没有符合需要的状态码,找到对应的类别,添加一条新的记录。
2. 状态码段说明
001-100 公共状态码
100-999 业务线独有状态码
3. 小于10000的错误码与特殊错误码
以PHP为例,PHP语言提供的错误码是2的N次方的数值。从1到30719。
超过10000的错误码有:16384、30719,这两个状态码不能再被定义。
| 1 |
E_ERROR (integer) |
致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。 | |
|---|---|---|---|
| 2 |
E_WARNING (integer) |
运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。 | |
| 4 |
E_PARSE (integer) |
编译时语法解析错误。解析错误仅仅由分析器产生。 | |
| 8 |
E_NOTICE (integer) |
运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。 | |
| 16 |
E_CORE_ERROR (integer) |
在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR,但是是由PHP引擎核心产生的。 |
since PHP 4 |
| 32 |
E_CORE_WARNING (integer) |
PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。 |
since PHP 4 |
| 64 |
E_COMPILE_ERROR (integer) |
致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。 |
since PHP 4 |
| 128 |
E_COMPILE_WARNING (integer) |
编译时警告 (非致命错误)。类似 E_WARNING,但是是由Zend脚本引擎产生的。 |
since PHP 4 |
| 256 |
E_USER_ERROR (integer) |
用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 |
since PHP 4 |
| 512 |
E_USER_WARNING (integer) |
用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 |
since PHP 4 |
| 1024 |
E_USER_NOTICE (integer) |
用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 |
since PHP 4 |
| 2048 |
E_STRICT (integer) |
启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。 | since PHP 5 |
| 4096 |
E_RECOVERABLE_ERROR (integer) |
可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler()),将成为一个 E_ERROR 从而脚本会终止运行。 |
since PHP 5.2.0 |
| 8192 |
E_DEPRECATED (integer) |
运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 | since PHP 5.3.0 |
| 16384 |
E_USER_DEPRECATED (integer) |
用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 |
since PHP 5.3.0 |
| 30719 |
E_ALL (integer) |
E_STRICT出外的所有错误和警告信息。 |
30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously |
4. 参数验证类
10001至19999
| 状态码 | 说明 |
|---|---|
| 10001 | 参数错误,比较抽象的状态码 |
| 10002 | 手机号格式错误 |
| 10003 | 邮箱格式错误 |
| 10004 | 短信验证码错误 |
| 10005 | 身份证格式错误 |
| 10006 | 参数不可为空 |
| 10007 | 账号或密码错误 |
| 10008 | 确认密码不一致 |
| 10009 | 图片大小或尺寸或文件类型不对 |
| 10010 | 图片上传失败 |
| 10201 | 微信appid无效或配置异常 |
| 10202 | 微信小程序session_key失效 |
| 10203 | 微信授的state无效(为了防止csrf) |
| 10301 | 阿里首次验证失,需重新验证 |
| 10302 | 阿里验证失败 |
| 接口鉴权状态码 | |
| 10101 | 公共参数不能为空 |
| 10102 | 请求时间已过期 |
| 10103 | 签名错误 |
| 10104 | appid无效 |
| 10105 | 接口验证服务错误 |
| 10106 | 远程服务器内部错误 |
| 10107 | 无接口访问权限 |
5. 项目业务类
20001至29999
| 20001 | 用户不存在 |
|---|---|
| 20002 | 没查到数据 |
| 20003 | 过于频繁的手机短信验证码请求 |
| 20004 | 用户已注销 |
| 20005 | 用户数据同步异常(Oauth2.0用户中心与旧bbs用户体系) |
| 20101 | Oauth2.0 非法客户端 |
| 20102 | Oauth2.0 没有设置有效的redirect_uri |
| 20201 | 内部服务调用异常(API 网关调用的服务出现异常) |
| 20202 | redis路由信息异常 |
| 20203 | redis项目信息异常 |
6. 数据库类
30001至39999
| 30001 | 数据库操作失败 |
|---|---|
| 30002 | 数据库写入失败 |
| 30003 | 数据库更新失败 |
| 30004 | 数据库删除失败 |
| 30005 | 数据库查询失败 |
| 30100 | redis操作异常 |
7. 会话类
40001至49999
| 40001 | 账号或密码错误 |
|---|---|
| 40002 | 会话过期(登录状态过期) |
| 40003 | 无效的授权码(Oauth22.0中的 code)或临时凭证 |
| 40004 | 无效的访问令牌 (Oauth2.0中的 token)或最终凭证 |
| 40005 | 无效的邮箱验证码 |
| 40006 | 不匹配的客户端。例如用户授权给A客户端的code,只能在A客户端进行access_token的交换,用户在A客户端产生的refresh_token只能在A客户端进行刷新使用。 |
| 40007 | Oauth2.0无效的refresh token。 |
| 40008 | 错误的访问令牌(格式错误)。 |
| 40009 | Oauth2.0无效的refresh token,格式错误。 |
| 40010 | Oauth2.0无效的refresh token,解密失败。 |
| 40011 | 无接口调用权限 |
| 40012 | Oauth2.0无效的scope,授权范围失效 |
| 41001 | HTTP Basic Auth 失败 |
8. 权限类
50001至59999
| 50001 | 未登录(SSO统一授权) |
|---|---|
| 50002 | 用户账号信息异常 |
| 50003 | 手机号码未认证 |
| 50004 | 超出普通用户权限(例如:当普通用户访问开发者用户的接口或页面) |
| 50005 | 不可见用户(用户中心的特殊类用户之一)非法登陆 |
| 50101 | Oauth2.0 无效的scope(能力范围) |
| 50102 | 未接入的服务 |
9. 回调类
60001至69999
10. 远程调用类
70001至79999
| 70001 | 易盾调用失败 |
|---|---|
| 70002 | 邮件发送失败,客户端邮件服务配置错误导致的与提供邮件发送的服务端交互出现问题 |
| 70003 | 邮件发送失败,客户端邮件配置正确,但还是发送失败,用户可能使用了无效邮箱或用户邮箱为空 |
| 70100 | guzzle客户端异常 |
| 70101 | 调用百度接口异常 |
| 70102 | 调用字节跳动(巨量引擎)接口异常 |
| 70103 | 微信接口调用异常 |
| 70104 | 手机短信接口调用异常 |
| 70105 | 快手接口调用异常 |
11. 加解密类
80001至89999
| 80001 | 无效的签名 | |
|---|---|---|
| 80002 | 验证签名时发生错误 | |
| 80003 | 加密失败 | |
| 80004 | 解密失败 | |
| 80005 | 加密key不正确(非对称加密的公钥或私钥 | 对称加密的秘钥) |
12. 其他类
90000至99999
| 90000 | 程序错误 |
|---|---|
| 90001 | uuid生成失败 |