复合错误码(旧版)
该版本是旧版错误码,错误码为复合信息,对应旧版请求接口:
- sendShark系列
- sendSharkEx系列
该系列请求接口返回的错误码包含两部分:
- retCode: 网关错误
- dataRetCode: 业务错误
业务错误码是由业务自行定义,因此本文不做介绍,本文只介绍retCode,复合错误码也是指retCode。
复合错误码
复合错误码由下面5部分复合信息组合而成,结构如下:
[C] [LL] [NN] [SS] [MM]
- [C]特殊标记位,表示需要的前置条件不满足(比如:没有guid、tcp通道的首包不成等)
- [LL]错误发生在shark构架的哪一层(业务侧无需关注)
- [NN]网络错误码(比如:无网络)
- [SS]shark逻辑错误码(比如:回包的解密解压缩出错)
- [MM]常规错误码(对以上错误的一个概括,一般来说业务侧只需关注这个错误就行了)
例如,错误码-840130024代表的意义如下:
- 8: 由于注册guid失败 (-8 100 1000000)而导致此业务请求失败
- 40: 无需要关注
- 13: 注册guid失败的原因是连接时的socket超时(-130000)
- 00: 00表示没有对应的Shark逻辑层错误码
- 24: 概括为常规错误是建立连接时socket超时(-24)
这种情况下重点排查[NN]和[SS]层错误,本示例中[NN]中错误码为-130000,因此考虑guid获取失败原因是连接超时导致的,需排查网络及服务端的连通情况。
此外,如果复合错误码为正数则代表网关后端错误码,如果为负数则代表客户端错误码。
后端错误码代表客户端请求已经到达网关后端,具体示例:
800000016
- 8:由于注册guid失败(8 100 1000000)而导致业务请求失败
- 16:Mazu 调用同步交换密钥接口返回失败
后端错误码详细定义请参见网关错误码
复合错误码
MM常规错误码
错误码 | 描述 |
---|---|
-1(MM=01) | 未知错误 |
-2(MM=02) | 无网络,网络不可用 |
-3(MM=03) | 网络错误 |
-4(MM=04) | 接收回包超时 |
-5(MM=05) | 回包数据解析错误 |
-6(MM=06) | 需要WiFi认证 |
-9(MM=09) | 没有可用的通道(通过setEnable(false)禁掉了) |
-10(MM=10) | 非法参数 |
-11(MM=11) | 业务取消请求 |
-14(MM=15) | 发送过程出现异常(catch住了) |
-15(MM=15) | 用来验证服务器身份的Header字段不匹配(已废弃) |
-16(MM=16) | 后台业务层错误 |
-17(MM=17) | 发送过程中超时(业务数据没到后台) |
-20(MM=20) | 超时,且请求还未发出(业务数据没到后台) |
-21(MM=21) | 创建待发送的序列化数据失败 |
-22(MM=22) | 使用了不支持的特性 |
-23(MM=23) | 序列化编码错误 |
-24(MM=24) | 建立连接时socket超时(业务数据没到后台) |
-25(MM=25) | 需要重定向 |
-26(MM=26) | 权限拒绝 |
SS客户端逻辑层错误码
错误码 | 描述 |
---|---|
-300(SS=03) | 回包的解密解压缩出错(废弃) |
-400(SS=04) | 内部命令字回包的解码出错(废弃) |
-600(SS=06) | 回包的解密解压缩出错 |
-700(SS=07) | 内部命令字回包的解码出错 |
-800(SS=08) | 只开启tcp通道,但tcp失败了 |
-900(SS=09) | 业务命令字回包的解码出错 |
-1200(SS=12) | 发送任务队列时异常 |
-1300(SS=13) | tcp首包太频繁,被限制 |
-1400(SS=14) | tcp通道被关闭了,但该请求只能通过tcp通道发送(正常不会出现) |
-1500(SS=15) | 序列化编码错误 |
-1800(SS=18) | 回包数据是空的 |
-1900(SS=19) | 本地无合法密钥,回包的secret不应为空 |
-2000(SS=20) | 从返回的数据解析的sessionId非法 |
-2100(SS=21) | SCSharkSkin.body为空 |
-2200(SS=22) | SCSharkSkin.head为空 |
-2300(SS=23) | 回包解码出错(SCSharkSkin) |
-2400(SS=24) | 回包解码出错(SCShark) |
-2500(SS=25) | 回包解析时异常 |
-2600(SS=26) | 回包的sashimi是空的 |
-2700(SS=27) | 非连接中,忽略心跳包(只有心跳包可能出现这个错误) |
NN客户端网络层错误
错误码 | 描述 |
---|---|
-10000 | HttpURLConnection.openConnecion未成功 |
-40000 | http接收数据过程的异常 |
-50000 | 接收超时,回包超时 |
-60000 | 需要重定向 |
-70000 | 未知主机 |
-80000 | IllegalAccessError |
-90000 | IllegalStateException |
-100000 | ProtocolException |
-120000 | 读写时的socket超时(业务数据可能已经到了后台) |
-130000 | 连接时的socket超时(业务数据没到后台) |
-140000 | IOException |
-150000 | 其他网络异常 |
-160000 | 需要WiFi认证 |
-170000 | 用来验证服务器身份的Header字段不匹配 |
-180000 | socket未连接 |
-190000 | socket已关闭 |
-210000 | 关闭连接失败 |
-220000 | 无物理网络,网络不可用 |
-240000 | 非法参数 |
-250000 | 回包数据列表为空 |
-300000 | 后台业务层错误 |
-310000 | 其他网络异常 |
-320000 | 其他网络异常 |
-330000 | SocketException |
-340000 | socket连接失败 |
-350000 | socket failed: EACCES (Permission denied) |
-360000 | Permission denied |
-370000 | isConnected failed: EHOSTUNREACH (No route to host) |
-380000 | No route to host |
-390000 | Connection reset by peer |
-400000 | setsockopt failed: ENOPROTOOPT (Protocol not available) |
-410000 | Protocol not available |
-420000 | 其他SocketException |
-430000 | Permission denied (missing INTERNET permission?) |
-440000 | SecurityException |
-450000 | failed: ENETUNREACH (Network is unreachable) |
-460000 | failed: ENOTSOCK (Socket operation on non-socket) |
-470000 | isConnected failed: ECONNREFUSED (Connection refused) |
-480000 | isConnected failed: ECONNRESET (Connection reset by peer) |
-490000 | connect failed: errno |
-500000 | 其他ConnectException |
-510000 | MalformedURLException |
-520000 | 未知主机UnknownHostException |
-530000 | 回包超时,网络切换过程中发出请求 |
-540000 | 回包超时,经探测为不可达的网络 |
-550000 | 回包超时,从发起请求到超时的过程中网络有切换过 |
-560000 | Connection reset |
-570000 | Read failed 或者 select/poll failed |
-580000 | Socket input is shutdown/Already bound/Unresolved address/Unknown socket option |
-590000 | Socks Socket 异常 |
-600000 | Host unreachable |
-610000 | Http接受阶段IOException |
-620000 | SSLException |
-630000 | EOFException |
-640000 | Http接收阶段其他异常 |
-900000 | 其他未知错误 |
C特殊标记位
错误码 | 描述 |
---|---|
-800000000(C=8) | 由于注册guid失败 |
-700000000(C=7) | 由于发首包失败(仅用于TCP通道) |
-600000000(C=6) | 由于注册vid ticket失败(仅vid阻塞模式才可能出现) |