开发者社区 问答 正文

iOS-SDK之如何实现异常响应?

SDK中发生的异常分为两类:ClientError和ServerError。其中前者指的是参数错误、网络错误等,后者指OSS Server返回的异常响应。

Error类型Error DomainCodeUserInfo
ClientError
com.aliyun.oss.clientErrorOSSClientErrorCodeNetworkingFailWithResponseCode0连接异常
OSSClientErrorCodeSignFailed签名失败
OSSClientErrorCodeFileCantWrite文件无法写入
OSSClientErrorCodeInvalidArgument参数非法
OSSClientErrorCodeNilUploadid断点续传任务未获取到uploadId
OSSClientErrorCodeTaskCancelled任务被取消
OSSClientErrorCodeNetworkError网络异常
OSSClientErrorCodeCannotResumeUpload断点上传失败,无法继续上传
[tr=rgb(239, 251, 255)][td]OSSClientErrorCodeNotKnown 未知异常 ServerErrorcom.aliyun.oss.serverError(-1 * httpResponseCode)解析响应XML得到的Dictionary

展开
收起
青衫无名 2017-10-18 14:44:00 1663 分享 版权
阿里云 AI 助理回答

在阿里云的OSS(Object Storage Service,对象存储服务)SDK使用过程中遇到的异常分类确实如您所述,分为ClientErrorServerError两大类。下面我将为您详细解释这些错误类型及其含义,并提供可能的解决思路或建议。

ClientError 类型

这类错误通常源于客户端操作不当、配置问题或者本地环境因素,具体包括但不限于以下几种:

  1. OSSClientErrorCodeNetworkingFailWithResponseCode0 - 连接异常:这通常意味着客户端无法成功建立与OSS服务器的连接,可能是网络不通、DNS解析失败或服务器拒绝连接等。解决建议:检查网络连接,确认网络配置(如代理设置),尝试ping OSS服务地址以检测网络连通性。

  2. OSSClientErrorCodeSignFailed - 签名失败:这意味着请求签名过程出现问题,可能是AccessKey/Secret错误、签名算法问题等。解决建议:检查你的AccessKey和Secret是否正确,以及SDK配置中的签名方式是否与阿里云控制台一致。

  3. OSSClientErrorCodeFileCantWrite - 文件无法写入:这通常发生在上传文件之前,本地文件系统权限问题或路径错误。解决建议:确保应用程序有权限访问指定的文件路径,检查文件路径是否正确无误。

  4. OSSClientErrorCodeInvalidArgument - 参数非法:调用API时提供的参数不符合要求。解决建议:仔细核对API文档,确保所有参数格式正确且符合要求。

  5. OSSClientErrorCodeNilUploadid - 断点续传任务未获取到uploadId:断点续传时,首次分片上传应获取到一个uploadId用于后续续传,此错误表示未成功获取。解决建议:检查初始化断点续传的逻辑,确保首次上传成功并保存了uploadId。

  6. OSSClientErrorCodeTaskCancelled - 任务被取消:显式或隐式地取消了上传任务。解决建议:检查代码中是否有意或无意触发了任务取消的操作。

  7. OSSClientErrorCodeNetworkError - 网络异常:更广泛的网络问题。解决建议:同上,检查网络状况。

  8. OSSClientErrorCodeCannotResumeUpload - 断点上传失败,无法继续上传:可能是因为uploadId无效或已过期。解决建议:重新发起上传请求,获取新的uploadId。

  9. OSSClientErrorCodeNotKnown - 未知异常:当遇到未明确分类的客户端错误时。解决建议:查看日志详情,必要时联系技术支持。

ServerError 类型

这类错误是由于OSS服务器端的问题导致的,例如服务不可用、资源不存在等。错误码通常是负数乘以HTTP响应状态码。例如,com.aliyun.oss.serverError(-1 * httpResponseCode) 表示服务端返回了一个错误响应,具体的错误信息可以通过解析响应XML得到的Dictionary来进一步了解。

解决建议: - 首先,根据HTTP响应状态码判断错误类型(如4xx代表客户端错误需检查请求,5xx代表服务器错误可稍后重试)。 - 查看响应体中的错误消息,它通常包含更详细的错误描述和建议。 - 如果问题持续存在,可以考虑查看阿里云官方文档或提交工单寻求帮助。

面对Server Error,客户端除了根据错误信息调整策略(如重试机制)外,重要的是要关注阿里云的服务健康状态,通过阿里云控制台或官方公告了解是否有服务中断或维护情况。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答