开发者社区> 问答> 正文

C-SDK之如何实现 错误处理?

使用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拒绝访问
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-19 11:48:16 1983 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
从 SDK 到编解码:视频直播架构解析 立即下载
跨平台的云服务SDK需要什么 立即下载
一个跨平台的云服务SDK需要什么 立即下载