全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
对象存储 OSS

错误处理

更新时间:2017-06-07 13:26:11

异常处理

使用OSS C SDK时如果请求出错,会有相应的错误信息在aos_status_s中输出。aos_status_s有以下几个属性:

  • code: 出错请求的HTTP状态码,整形类型。
  • error_code: OSS的错误码,字符串类型。
  • error_msg: OSS的错误信息,字符串类型。
  • req_id: 标识该次请求的UUID;当您无法解决问题时,可以凭这个req_id来请求OSS开发工程师的帮助,字符串类型。

超时处理

如何判断超时

  • 如果返回的aos_status_t中的code为5XX,表示服务器内部错误,可以重试。
  • 如果返回的aos_status_t中的code不等于2XX,且error_code为-992或者-995时,表示链接超时或请求超时,可以重试。
  • 可以使用aos_status.h中的aos_should_retry(aos_status_t *)判断返回的错误码是否需要重试,如果返回1,表示需要重试。

如何设置超时时间

  • 设置链接超时:options->ctl->options->connect_timeout,单位秒,默认是10秒。
  • 设置DNS超时:options->ctl->options->dns_cache_timeout,单位秒,默认是60秒。
  • 设置请求超时:
    • 通过设置options->ctl->options->speed_limit的值控制能容忍的最小速率,默认是1024,即1K。
    • 通过设置options->ctl->options->speed_time的值控制能容忍的最长时间,默认是15秒。
    • 如果使用了上述默认值,表示如果连续15秒的传输速率小于1K,则超时。

常见错误码

错误码 描述
AccessDenied 拒绝访问
BucketAlreadyExists Bucket已经存在
BucketNotEmpty Bucket不为空
EntityTooLarge 实体过大
EntityTooSmall 实体过小
FileGroupTooLarge 文件组过大
FilePartNotExist 文件Part不存在
FilePartStale 文件Part过时
InvalidArgument 参数格式错误
InvalidAccessKeyId AccessKeyId不存在
InvalidBucketName 无效的Bucket名字
InvalidDigest 无效的摘要
InvalidObjectName 无效的Object名字
InvalidPart 无效的Part
InvalidPartOrder 无效的part顺序
InvalidTargetBucketForLogging Logging操作中有无效的目标bucket
InternalError OSS内部发生错误
MalformedXML XML格式非法
MethodNotAllowed 不支持的方法
MissingArgument 缺少参数
MissingContentLength 缺少内容长度
NoSuchBucket Bucket不存在
NoSuchKey 文件不存在
NoSuchUpload Multipart Upload ID不存在
NotImplemented 无法处理的方法
PreconditionFailed 预处理错误
RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟
RequestTimeout 请求超时
SignatureDoesNotMatch 签名错误
TooManyBuckets 用户的Bucket数目超过限制
本文导读目录