如何从NSError中获取非本地化描述或键用于API错误分析?
如何从NSError中获取非本地化的错误键或描述?
我需要对API请求返回的错误进行分组并用于数据分析,但目前从NSError中获取的所有描述或键似乎都是本地化后的内容。
我已尝试以下两种方式:
- 获取
error.code : error.domain——但由于域名大多相同,实用性不高 - 获取
error.userInfo[NSDebugDescriptionErrorKey] : error.userInfo[NSURLErrorKey]——两者均为nil,同样帮助不大
目前我认为这可能无法实现,但仍希望听取其他思路。
可行思路整理
检查自定义错误扩展字段
如果是团队自研API的错误,大概率会在userInfo中添加自定义非本地化字段,比如"APIErrorRawKey"或"OriginalErrorCode"这类标识,直接读取对应值即可。不少第三方网络库(如AFNetworking)封装错误时也会加入这类原始信息。解析底层错误的原始响应
尝试从userInfo[NSUnderlyingErrorKey]获取底层错误,这个错误可能携带服务器返回的原始响应体。解析响应体后,就能拿到后端返回的原始错误码、错误类型字符串等非本地化内容,这些是最适合用于数据分析分组的标识。精细化利用error.code与domain组合
即便域名重复,结合error.code和具体请求场景也能做有效分组。比如NSURLErrorDomain下,-1001代表请求超时、-1003代表无法解析主机,这类错误码本身就是非本地化的标准标识,完全可以作为分组依据。在网络层封装自定义错误信息
如果现有错误返回缺乏足够的非本地化字段,可以在网络请求的统一处理层做封装:当收到服务器错误响应时,先提取原始的错误标识(比如后端返回的error_type字段),将其存入自定义NSError的userInfo或子类属性中,后续分析直接读取该字段即可。
内容的提问来源于stack exchange,提问作者Anastasia Veremiichyk
相关产品推荐
相关产品推荐

