Skip to content

错误码配置

在这一节中,我们会对引擎错误码配置进行详解。

该错误码的配置位于{项目资产库}/res/server/server_errors.xml中(在引擎内置配置文件夹下有类似文件:server_errors_default.xml,并作为引擎错误码配置的默认值),修改项目资产库下的server_errors.xml使错误码配置继承或者叫做覆盖(只可修改descr字段)。

这样不会破坏引擎的默认设置,在你更新引擎时也不会产生冲突,以及在多个逻辑项目时不会影响到其他的项目设置。

我们先来看一下一个错误码是什么样的?

错误码的组成

xml
<root>
    <SUCCESS>
		<id>0</id>
		<descr>	成功。</descr>
	</SUCCESS>
    ...
</root>
  • 一个错误码的配置由错误码标记(错误码的名字,且需保证唯一性)、错误码id、错误描述三个部分组成;
  • 错误码id的类型为uint16。

WARNING

引擎的错误码是因内部机制而固定的,不可自定义错误id,只能修改已有错误码的错误描述字段descr

那引擎内包含的错误码有哪些?

引擎包含的错误码

引擎包含的错误码在kbe/res/server/server_errors_defaults.xml中,

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 : 服务器没有准备好。

TIP

在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中:

xml
<root>
    <SUCCESS>
		<id>0</id>
		<descr>	我是修改后的成功。</descr>
	</SUCCESS>
</root>

这样,一个Success的错误码已经修改成功,描述改成了”我是修改后的成功。”

2. 传输

错误码按照id中定义的uint16的值进行传输,发送和接收方需要对该id进行解析,了解错误码实际对应的意义。