🔞 错误码配置
错误码配置
在这一节中,我们会对引擎错误码配置进行详解。
该错误码的配置位于{项目资产库}/res/server/server_errors.xml
中(在引擎内置配置文件夹下有类似文件:server_errors_default.xml
,并作为引擎错误码配置的默认值),修改项目资产库下的server_errors.xml
使错误码配置继承或者叫做覆盖(只可修改descr字段)。
这样不会破坏引擎的默认设置,在你更新引擎时也不会产生冲突,以及在多个逻辑项目时不会影响到其他的项目设置。

我们先来看一下一个错误码是什么样的?
错误码的组成
<root>
<SUCCESS>
<id>0</id>
<descr> 成功。</descr>
</SUCCESS>
...
</root>
- 一个错误码的配置由错误码标记(错误码的名字,且需保证唯一性)、错误码id、错误描述三个部分组成;
- 错误码id的类型为uint16。
注意
引擎的错误码是因内部机制而固定的,不可自定义错误id,只能修改已有错误码的错误描述字段descr
那引擎内包含的错误码有哪些?
引擎包含的错误码
引擎包含的错误码在kbe/res/server/server_errors_defaults.xml
中,
<root>
<!-- 错误码类别为:uint16 -->
<SUCCESS>
<id>0</id>
<descr> 成功。</descr>
</SUCCESS>
<SERVER_ERR_SRV_NO_READY>
<id>1</id>
<descr> 服务器没有准备好。</descr>
</SERVER_ERR_SRV_NO_READY>
<SERVER_ERR_SRV_OVERLOAD>
<id>2</id>
<descr> 服务器负载过重。</descr>
</SERVER_ERR_SRV_OVERLOAD>
<SERVER_ERR_ILLEGAL_LOGIN>
<id>3</id>
<descr> 非法登录。</descr>
</SERVER_ERR_ILLEGAL_LOGIN>
<SERVER_ERR_NAME_PASSWORD>
<id>4</id>
<descr> 用户名或者密码不正确。</descr>
</SERVER_ERR_NAME_PASSWORD>
<SERVER_ERR_NAME>
<id>5</id>
<descr> 用户名不正确。</descr>
</SERVER_ERR_NAME>
<SERVER_ERR_PASSWORD>
<id>6</id>
<descr> 密码不正确。</descr>
</SERVER_ERR_PASSWORD>
<SERVER_ERR_ACCOUNT_CREATE_FAILED>
<id>7</id>
<descr> 创建账号失败(已经存在一个相同的账号)。</descr>
</SERVER_ERR_ACCOUNT_CREATE_FAILED>
<SERVER_ERR_BUSY>
<id>8</id>
<descr> 操作过于繁忙(例如:在服务器前一次请求未执行完毕的情况下连续N次创建账号)。</descr>
</SERVER_ERR_BUSY>
<SERVER_ERR_ACCOUNT_LOGIN_ANOTHER>
<id>9</id>
<descr> 当前账号在另一处登录了。</descr>
</SERVER_ERR_ACCOUNT_LOGIN_ANOTHER>
<SERVER_ERR_ACCOUNT_IS_ONLINE>
<id>10</id>
<descr> 账号已登陆。</descr>
</SERVER_ERR_ACCOUNT_IS_ONLINE>
<SERVER_ERR_PROXY_DESTROYED>
<id>11</id>
<descr> 与客户端关联的proxy在服务器上已经销毁。</descr>
</SERVER_ERR_PROXY_DESTROYED>
<SERVER_ERR_ENTITYDEFS_NOT_MATCH>
<id>12</id>
<descr> EntityDefs不匹配。</descr>
</SERVER_ERR_ENTITYDEFS_NOT_MATCH>
<SERVER_ERR_SERVER_IN_SHUTTINGDOWN>
<id>13</id>
<descr> 服务器正在关闭中。</descr>
</SERVER_ERR_SERVER_IN_SHUTTINGDOWN>
<SERVER_ERR_NAME_MAIL>
<id>14</id>
<descr> Email地址错误。</descr>
</SERVER_ERR_NAME_MAIL>
<SERVER_ERR_ACCOUNT_LOCK>
<id>15</id>
<descr> 账号被冻结。</descr>
</SERVER_ERR_ACCOUNT_LOCK>
<SERVER_ERR_ACCOUNT_DEADLINE>
<id>16</id>
<descr> 账号已过期。</descr>
</SERVER_ERR_ACCOUNT_DEADLINE>
<SERVER_ERR_ACCOUNT_NOT_ACTIVATED>
<id>17</id>
<descr> 账号未激活。</descr>
</SERVER_ERR_ACCOUNT_NOT_ACTIVATED>
<SERVER_ERR_VERSION_NOT_MATCH>
<id>18</id>
<descr> 与服务端的版本不匹配。</descr>
</SERVER_ERR_VERSION_NOT_MATCH>
<SERVER_ERR_OP_FAILED>
<id>19</id>
<descr> 操作失败。</descr>
</SERVER_ERR_OP_FAILED>
<SERVER_ERR_SRV_STARTING>
<id>20</id>
<descr> 服务器正在启动中。</descr>
</SERVER_ERR_SRV_STARTING>
<SERVER_ERR_ACCOUNT_REGISTER_NOT_AVAILABLE>
<id>21</id>
<descr> 未开放账号注册功能。</descr>
</SERVER_ERR_ACCOUNT_REGISTER_NOT_AVAILABLE>
<SERVER_ERR_CANNOT_USE_MAIL>
<id>22</id>
<descr> 不能使用email地址。</descr>
</SERVER_ERR_CANNOT_USE_MAIL>
<SERVER_ERR_NOT_FOUND_ACCOUNT>
<id>23</id>
<descr> 找不到此账号。</descr>
</SERVER_ERR_NOT_FOUND_ACCOUNT>
<SERVER_ERR_DB>
<id>24</id>
<descr> 数据库错误(请检查dbmgr日志和DB)。</descr>
</SERVER_ERR_DB>
<SERVER_ERR_USER1>
<id>25</id>
<descr> 用户自定义错误码1。</descr>
</SERVER_ERR_USER1>
...
<!-- 省略中间的用户自定义错误码 -->
...
<SERVER_ERR_USER10>
<id>34</id>
<descr> 用户自定义错误码10。</descr>
</SERVER_ERR_USER10>
<SERVER_ERR_LOCAL_PROCESSING>
<id>35</id>
<descr> 本地处理,通常为某件事情不由第三方处理而是由KBE服务器处理。</descr>
</SERVER_ERR_LOCAL_PROCESSING>
<SERVER_ERR_ACCOUNT_RESET_PASSWORD_NOT_AVAILABLE>
<id>36</id>
<descr> 未开放账号重置密码功能。</descr>
</SERVER_ERR_ACCOUNT_RESET_PASSWORD_NOT_AVAILABLE>
<SERVER_ERR_ACCOUNT_LOGIN_ANOTHER_SERVER>
<id>37</id>
<descr> 当前账号在其他服务器登陆了。</descr>
</SERVER_ERR_ACCOUNT_LOGIN_ANOTHER_SERVER>
</root>
服务器级别
SUCCESS
: 成功处理。
SERVER_ERR_SRV_NO_READY
: 服务器没有准备好。
提示
在baseapp启动时,存在一个检测是否ready的回调,如果该回调返回1.0,该服务器才就绪,如果在就绪之前客户端请求进入服务器,则会收到该错误。
SERVER_ERR_SRV_OVERLOAD
: 服务器负载过重。
SERVER_ERR_PROXY_DESTROYED
: 与客户端关联的proxy在服务器上已经销毁。
SERVER_ERR_ENTITYDEFS_NOT_MATCH
: EntityDefs不匹配。
SERVER_ERR_SERVER_IN_SHUTTINGDOWN
: 服务器正在关闭中。
SERVER_ERR_BUSY
: 操作过于繁忙(例如:在服务器前一次请求未执行完毕的情况下连续N次创建账号)。
SERVER_ERR_VERSION_NOT_MATCH
: 与服务端的版本不匹配。
SERVER_ERR_SRV_STARTING
: 服务器正在启动中。
登录相关
SERVER_ERR_ILLEGAL_LOGIN
: 非法登录。
SERVER_ERR_NAME_PASSWORD
: 用户名或者密码不正确。在loginapp验证失败用户名密码时返回。
SERVER_ERR_NAME
: 用户名不正确
SERVER_ERR_PASSWORD
: 密码不正确
SERVER_ERR_ACCOUNT_CREATE_FAILED
: 创建账号失败(已经存在一个相同的账号)。
SERVER_ERR_ACCOUNT_LOGIN_ANOTHER
: 当前账号在另一处登录了。
SERVER_ERR_ACCOUNT_IS_ONLINE
: 账号已登陆。
SERVER_ERR_NAME_MAIL
: Email地址错误。
SERVER_ERR_ACCOUNT_LOCK
: 账号被冻结。
SERVER_ERR_ACCOUNT_DEADLINE
: 账号已过期。
SERVER_ERR_ACCOUNT_NOT_ACTIVATED
: 账号未激活。
SERVER_ERR_ACCOUNT_REGISTER_NOT_AVAILABLE
: 未开放账号注册功能。
SERVER_ERR_CANNOT_USE_MAIL
: 不能使用email地址。
SERVER_ERR_NOT_FOUND_ACCOUNT
: 找不到此账号。
SERVER_ERR_ACCOUNT_RESET_PASSWORD_NOT_AVAILABLE
: 未开放账号重置密码功能。
SERVER_ERR_ACCOUNT_LOGIN_ANOTHER_SERVER
: 当前账号在其他服务器登陆了。
其他
SERVER_ERR_OP_FAILED
: 操作失败。
SERVER_ERR_DB
: 数据库错误(请检查dbmgr日志和DB)。
SERVER_ERR_USER1
: 用户自定义错误码1。
SERVER_ERR_LOCAL_PROCESSING
: 本地处理,通常为某件事情不由第三方处理而是由KBE服务器处理。
修改一个错误码的描述descr
要修改一个错误码的描述,一般建议在{项目资产库}/res/server/server_errors.xml
下进行修改或添加。
1. 必须使用引擎已有的错误码id和错误码名称,且只可修改descr字段。
server_errors.xml
中:
<root>
<SUCCESS>
<id>0</id>
<descr> 我是修改后的成功。</descr>
</SUCCESS>
</root>
这样,一个Success的错误码已经修改成功,描述改成了”我是修改后的成功。”
2. 传输
错误码按照id中定义的uint16的值进行传输,发送和接收方需要对该id进行解析,了解错误码实际对应的意义。