iOS错误码
错误信息
iOS 的错误信息(NSError
)由错误域(Error Domain)和错误码(Error Code)组成。
错误域(Error Domain)
错误域 | 描述 |
---|---|
NSURLErrorDomain | HTTP 层错误,一般为 NSURLConnection、NSURLSession 返回的错误。 |
TMFSharkNetworkRequestErrorDomain | TMFShark 网络层错误。 |
TMFSharkNetworkRequestStatusCodeErrorDomain | TMFShark 网络层 status code 非法错误。 |
TMFSharkTaskErrorDomain | TMFShark 网络层任务异常的错误。 |
TMFSharkDataAccessLayerErrorDomain | 网关接入层错误。 |
TMFSharkDataBusinessLayerErrorDomain | 服务端业务层错误,错误码由具体的服务返回。 |
TMFSharkRequestErrorDomain | TMFShark 客户端业务层错误,通常为客户端解析数据失败。 |
错误码(Error Code)
NSURLErrorDomain
HTTP 层错误,一般为 NSURLConnection、NSURLSession 返回的错误。
相关错误信息定义在 <Foundation/NSError.h>
,详情请参考苹果官方的 Foundation 文档。
以下只列举出常见的错误码:
常规错误码
错误码定义 | 错误码 | 描述 |
---|---|---|
NSURLErrorUnknown | -1 | 未知错误。 |
NSURLErrorCancelled | -999 | 请求取消。 |
NSURLErrorBadURL | -1000 | URL 非法。 |
NSURLErrorTimedOut | -1001 | 请求超时。 |
NSURLErrorUnsupportedURL | -1002 | URL 非法。 |
NSURLErrorCannotFindHost | -1003 | 找不到 host。 |
NSURLErrorCannotConnectToHost | -1004 | 连接不到 host。 |
NSURLErrorNetworkConnectionLost | -1005 | 网络连接中断。 |
NSURLErrorDNSLookupFailed | -1006 | DNS 查找失败。 |
NSURLErrorHTTPTooManyRedirects | -1007 | - |
NSURLErrorResourceUnavailable | -1008 | - |
NSURLErrorNotConnectedToInternet | -1009 | 不能连接到互联网。 |
NSURLErrorRedirectToNonExistentLocation | -1010 | - |
NSURLErrorBadServerResponse | -1011 | - |
SSL 错误码
错误码定义 | 错误码 | 描述 |
---|---|---|
NSURLErrorSecureConnectionFailed | -1200 | |
NSURLErrorServerCertificateHasBadDate | -1201 | |
NSURLErrorServerCertificateUntrusted | -1202 | |
NSURLErrorServerCertificateHasUnknownRoot | -1203 | |
NSURLErrorServerCertificateNotYetValid | -1204 | |
NSURLErrorClientCertificateRejected | -1205 | |
NSURLErrorClientCertificateRequired | -1206 |
TMFSharkNetworkRequestErrorDomain
TMFShark 网络层错误。
错误码定义 | 错误码 | 描述 |
---|---|---|
TMFSharkNetworkRequestErrorUnknown | 0 | 未知错误。 |
TMFSharkNetworkRequestErrorInvalidRequestData | -1 | 请求的数据非法。 |
TMFSharkNetworkRequestStatusCodeErrorDomain
TMFShark 网络层 status code 非法错误。
错误码与 HTTP 状态码一一对应。 例如,504 表示 HTTP 层返回的 HTTP 状态码为 504。
TMFSharkTaskErrorDomain
TMFShark 网络层任务异常的错误。
错误码定义 | 错误码 | 描述 |
---|---|---|
TMFSharkTaskErrorUnknown | 0 | 未知错误。 |
TMFSharkTaskErrorDeserializeSharkDataFailed | 1301 | 反序列化 Shark 数据失败。 |
TMFSharkTaskErrorEmptySashimiData | 1302 | 返回的 Shark 数据没有包含业务数据。 |
TMFSharkDataAccessLayerErrorDomain
网关接入层错误,Mazu 服务生成,shark 层错误。
错误码 | 错误说明 |
---|---|
1 | Mazu 失败 |
2 | Mazu 密钥过期 |
3 | Mazu 无 session 信息,请重新携带 |
4 | Mazu 当前过载,目前不返回终端,仅后台记录 |
5 | Mazu 不正常的非加密请求,除了密钥交换请求,其他请求都要求加密返回给终端 |
6 | Mazu 密钥服务系统异常 |
7 | Mazu 解包失败 |
8 | Mazu 取不到接口的返回码,这种一般是调用到了业务服务,但是解析失败了,没有进到业务接口 |
9 | Mazu 找不到对应的 api 配置,可能是没配置,可能是对应的产品没有这个 api,可能 guid 为空(产品号从 guid 取出) |
10 | Mazu 在同步查询 sessionkey 的时候,sessionkey 的 proxy 失效 |
11 | Mazu sessionkey 查询接口返回失败 |
12 | Mazu 查询密钥接口返回正确,但是 key 是空的 |
13 | Mazu 同步查询密钥异常 |
14 | Mazu 在同步交换密钥的时候,sessionkey 的 proxy 失效 |
15 | Mazu 调用同步交换密钥接口框架返回失败 |
16 | Mazu 调用同步交换密钥接口返回失败 |
17 | Mazu 取不到接口的返回码,这种一般是调用到了业务服务,但是解析失败了,没有进到业务接口 |
18 | Mazu 同步密钥交换接口返回正确, 但是取不到 resp |
19 | Mazu 密钥交换成功但是 id 为空,不合理 |
20 | Mazu 在处理 SharkSkin 阶段,没有 sessionid |
21 | Mazu rsa 解密失败 |
22 | Mazu sm4 解密失败 |
23 | Mazu sm4 返回成功但是 buffer 为空 |
24 | Mazu 解密异常 |
25 | Mazu 需要解压缩,但是 body 为空 |
26 | Mazu 解压失败 |
27 | Mazu 解压异常 |
28 | Mazu docode body 阶段异常,应该是 shark 的反序列化失败了 |
29 | Mazu 处理 sharkskin 阶段异常 |
30 | Mazu 组回包处理 shark 的序列化结构为空 |
31 | Mazu 组回包时,压缩失败 |
32 | Mazu 组回包时,压缩异常 |
33 | Mazu 组回包,加密失败 |
34 | Mazu 组回包,加密成功,但是 buffer 为空 |
35 | Mazu 未知的终端加密方式,一般不会出现这种情况,加密方式一般会先约定好 |
36 | Mazu 组回包时,加密异常 |
37 | Mazu 组回包时,encode body 异常 |
38 | Mazu 处理回包的时候编码异常 |
39 | Mazu 处理回包的时候异常 |
40 | Mazu 处理 http 请求时,整个 sharkfin 为空(都是默认值) |
41 | Mazu 处理 http 请求阶段异常 |
42 | Mazu sashimiMgr 初始化异常 |
43 | Mazu sashimi rpc 请求异常 |
44 | Mazu sashimi server 回包,取不到 resp 结构,一般是因为调用没有成功,或者调用错了,或者协议形参不是 resp |
45 | Mazu sashimi server 回包,wup 包解析后取不到接口返回码,一般因为协议没对齐 |
46 | Mazu 回包时,序列化出来的数据是空的 |
47 | Mazu 回包时发送数据长度为空 |
48 | Mazu 回包时异常 |
49 | Mazu tea 加密异常 |
50 | 安卓端使用 tcp 通道进行请求,api 返回的数据过大,超过了 1M 的限制,则会返回该错误码 |
51 | mazu处理阶段,http请求模块下,通过apiname和product获取对应的cmd失败 |
60 | 触发分组并发控制数量限制 |
61 | 请求sashimi的cmd和apiname的内容都是为空的,无法命中api |
70 | 防重放版本,检查请求包签名失败,计算HMAC算法失败 |
71 | 防重放版本,检查请求包签名不匹配 |
72 | token校验阶段 token过期 |
80 | 多中心(>=2)场景下,启用了Sharktail调度能力,调度判断出现异常 |
81 | 多中心(>=2)场景下,启用了Sharktail调度能力 Mazu配置的本地调度标记为空 |
101 | Tars 服务器端解码异常 |
102 | Tars 服务器端编码异常 |
103 | Tars 服务器端没有该函数 |
104 | Tars 服务器端没有该 servant 对象 |
105 | Tars 服务器端灰度状态不一致 |
106 | Tars 服务器队列超过限制 |
107 | Tars 异步调用超时,协议可能没有 wup 选项 |
108 | Tars proxy 链接异常 |
109 | Tars 服务器端超负载,超过队列长度 |
110 | Tars 客户端选路为空,服务不存在或者所有服务 down 掉了 |
111 | Tars 客户端按 set 规则调用非法 |
199 | Tars 服务器端未知异常 |
2xx | Tars RETCODE_MAZU_OFFSET |
3xx | Tars RETCODE_MAZU_OFFSET |
207 | Mazu 调用 SashimiServer 超时,一般为业务接口超时,引发调用链路超时,检查 api 配置的超时时长是否超过了业务接口的处理时长。业务接口处理时长由业务 API 开发人员给出 |
208 | Mazu 调用 SashimiServer 服务时,找不到可用节点 |
500 | Push 没有找对应的连接信息 |
501 | Push 在查找连接,获取返回码阶段处理异常 |
502 | Push 的时候找到的连接里面 sessionkey 为空 |
503 | Push 在处理时,需要从 fin 的 sessionid 里面按一定格式解出 fd,这个错误是因为找不到约定的分隔符 |
504 | Push 处理阶段 fin.sessionId 里面取出来的 sessionid 和 client current 里面连接的 sessionid 不一样 |
505 | Push 请求的 data 数据为空 |
506 | Push 请求在 encodeBody 阶段返回错误 |
1000 | Sashimi 鉴权失败 |
1001 | Sashimi 参数检查失败 |
1002 | Sashimi 触发熔断 |
1003 | Sashimi 请求限流失败 |
1004 | Sashimi api 应用校验失败 |
1005 | Sashimi api 应用配置加载失败 |
1006 | Sashimi 解析 sashimi 时反序列化 header 失败 |
1007 | Sashimi 使用 apiname 换 cmd 的时候找不到 guid 对应的产品 |
1008 | Sashimi 找不到 apiname 对应的 cmd |
1009 | Sashimi 未知错误 |
1010 | Sashimi 找不到 cmd 对应的接口信息 |
1011 | Sashimi 解析 sashimi 获取 api 信息时抛异常 |
1012 | Sashimi 处理加签逻辑时,生成的待签名串为空 |
1013 | Sashimi 加签时 HMAC ecode 失败 |
1014 | Sashimi require 字段没有找到 |
1015 | Sashimi 参数检查,从 body 获取表单数据失败(k1=v1&k2=v2) |
1016 | Sashimi 不支持的参数位置 |
1017 | Sashimi require 字段找到,但是为空 |
1018 | Sashimi 错误的枚举值 |
1019 | Sashimi 正则表达式不匹配,没有配置特殊的正则匹配,则是使用默认的类型匹配 |
1020 | Sashimi 字符串长度过长 |
1021 | Sashimi bool 值校验失败 |
1022 | Sashimi 数值超过配置的最大值 |
1023 | Sashimi 数值小于配置的最小值 |
1024 | Sashimi 没有配置对应的授权方 id |
1025 | Sashimi 根据 authid 获取对应的授权信息失败 |
1026 | Sashimi 未知的授权字段位置 |
1027 | Sashimi 授权时,找不到对应的配置字段 |
1028 | Sashimi 授权时,获取不到 http proxy |
1029 | Sashimi 通过 http 服务请求授权服务失败,错误码在 error 日志里面查看,应该是 http 服务有问题 |
1030 | Sashimi 授权时,在 wup 回包中找不到 resp |
1031 | Sashimi 授权处理过程异常,详细看 error 日志 |
1032 | Sashimi getProcess 未知 apitype |
1033 | Sashimi 获取 process 异常 |
1034 | Sashimi http 接口转发时,url 为空 |
1035 | Sashimi http 调用异常 |
1036 | Sashimi 处理回包阶段异常 |
1037 | Sashimi 解析 http 回包失败 |
1038 | Sashimi httpServer 内部超时 |
1039 | Sashimi rpc 处理的核心阶段异常 |
1041 | Sashimi 在 handlesashimi 阶段就异常了 |
1042 | Sashimi 接口 prx 为空 |
1043 | Sashimi 鉴权时,对 AuthResp 做 json 解包失败 |
1044 | Sashimi 鉴权处理是抛异常 |
1045 | Sashimi 反序列化 tars http 请求回包失败 |
1046 | Sashimi tars 逻辑链条处理异常,详细看 error 日志 |
1047 | Sashimi http 逻辑链条处理异常,详细看 error 日志 |
1048 | Sashimi process 过程指针为空,应该是 apitype 有问题,或者 new 失败了 |
1049 | Sashimi http 方式请求时,需要把 apiname 转换成 cmd,这里出现 cmd 转换失败 |
1050 | 在处理ipv4盘路逻辑,回包的时候异常 |
1051 | tars rpc请求包大小为空,这种情况业务处理不了,直接给终端返回错误 |
1052 | 防重放检查,包的防重放信息重复了 |
1053 | api需要缓存,序列化cache数据时失败 |
1054 | api缓存获取节点,反序列化cache数据时异常 |
1055 | Guid不存在,终端需要重新更新guid |
1056 | sashimi通过wup异步调用后端服务应答为空 |
TMFSharkDataBusinessLayerErrorDomain
服务端业务层错误,错误码由具体的服务返回。
相关错误码由不同业务的后台服务定义和返回。
TMFSharkRequestErrorDomain
TMFShark 客户端业务层错误,通常为客户端解析数据失败。
错误码定义 | 错误码 | 描述 |
---|---|---|
TMFSharkRequestErrorUncompleted | -999 | 请求未完成。 |
TMFSharkRequestErrorUnknown | -99 | 未知错误。 |
TMFSharkRequestErrorRequestDataInvalid | -100 | 请求的数据非法。 |
TMFSharkRequestErrorFailedInAccessLayer | -101 | 接入层错误。 |
TMFSharkRequestErrorSerializationFailed | -102 | 序列化业务数据失败。 |
TMFSharkRequestErrorDeserializationFailed | -103 | 反序列化业务数据失败。 |
TMFSharkRequestErrorResponseDataInvalid | -104 | 返回的数据非法。 |
TMFSharkRequestErrorFailedInBusinessLayer | -105 | 业务层错误。 |
TMFSharkRequestErrorTimedOut | -10001 | 请求超时。 |