开发者社区 问答 正文

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

OSS Android SDK 中有两种异常 ClientException 以及 ServiceException ,他们都是受检异常。

ClientException


ClientException指SDK内部出现的异常,比如参数错误,网络无法到达,主动取消等等。

ServiceException


OSSException指服务器端错误,它来自于对服务器错误信息的解析。OSSException一般有以下几个成员:

  • Code: OSS返回给用户的错误码。
  • Message: OSS给出的详细错误信息。
  • RequestId: 用于唯一标识该次请求的UUID;当您无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。
  • HostId: 用于标识访问的OSS集群
  • rawMessage: HTTP响应的原始Body文本

下面是OSS中常见的异常:
错误码描述
AccessDenied拒绝访问
BucketAlreadyExistsBucket已经存在
BucketNotEmptyBucket不为空
EntityTooLarge实体过大
EntityTooSmall实体过小
FileGroupTooLarge文件组过大
FilePartNotExist文件Part不存在
FilePartStale文件Part过时
InvalidArgument参数格式错误
InvalidAccessKeyIdAccessKeyId不存在
InvalidBucketName无效的Bucket名字
InvalidDigest无效的摘要
InvalidObjectName无效的Object名字
InvalidPart无效的Part
InvalidPartOrder无效的part顺序
InvalidTargetBucketForLoggingLogging操作中有无效的目标bucket
InternalErrorOSS内部发生错误
MalformedXMLXML格式非法
MethodNotAllowed不支持的方法
MissingArgument缺少参数
MissingContentLength缺少内容长度
NoSuchBucketBucket不存在
NoSuchKey文件不存在
NoSuchUploadMultipart Upload ID不存在
NotImplemented无法处理的方法
PreconditionFailed预处理错误
RequestTimeTooSkewed发起请求的时间和服务器时间超出15分钟
RequestTimeout请求超时
[tr=rgb(239, 251, 255)][td]SignatureDoesNotMatch 签名错误 TooManyBuckets用户的Bucket数目超过限制

展开
收起
青衫无名 2017-10-18 13:54:22 1777 分享 版权
阿里云 AI 助理回答

在使用阿里云对象存储服务(OSS)的Android SDK进行开发时,正确处理异常是确保应用稳定性和用户体验的关键。您已经概述了ClientExceptionServiceException两种主要异常类型及其含义,下面我将提供一些实际操作建议,帮助您更好地处理这些异常。

1. ClientException(客户端异常)

  • 原因:这类异常通常源于客户端配置错误、网络问题或调用API时参数不合法等。例如,尝试上传一个空文件或者网络连接中断。

  • 处理方式

    • 检查参数:确保所有传递给OSS API的参数都是有效且格式正确的。
    • 网络诊断:确认设备的网络连接状态,包括是否可以访问公网以及DNS解析是否正常。
    • 日志记录:捕获此类异常并记录详细日志,包括异常堆栈信息,有助于定位问题。
    • 用户提示:向用户友好地反馈问题,比如提示检查网络设置或稍后再试。

2. ServiceException(服务端异常)

  • 原因:当OSS服务器无法处理请求时抛出,可能是因为权限问题、资源不存在、请求不符合OSS服务规则等。

  • 处理方式

    • 错误码处理:根据返回的Code来具体分析错误原因,并采取相应措施。例如,AccessDenied意味着需要检查访问密钥的权限设置。
    • RequestId与HostId:如果问题难以解决,可以通过提供的RequestIdHostId联系阿里云技术支持获取帮助。
    • 重试策略:对于某些瞬时错误(如RequestTimeout),可以设计合理的重试逻辑,但需注意不要对特定错误无限重试,以免陷入死循环。
    • 用户反馈:适当向用户解释错误情况,避免技术细节暴露,同时给出可能的解决方案或建议。

实践建议

  • 统一异常处理:在应用中实现一个统一的异常处理机制,对ClientExceptionServiceException分别做集中处理,保持代码的整洁和维护性。
  • 资源清理:在执行多部分上传或大文件操作时,如果遇到异常,记得清理已上传的Part或临时资源,避免资源泄露。
  • 安全实践:确保AccessKeyId和AccessKeySecret的安全存储,避免硬编码在代码中,推荐使用RAM子账号和STS临时凭证增强安全性。
  • 文档参考:经常查阅阿里云OSS官方文档,了解最新的API使用方法和最佳实践,及时跟进服务更新。

通过上述方法,您可以有效地管理和应对在使用OSS Android SDK过程中遇到的各类异常,提升应用的健壮性和用户体验。

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