使用OSS C SDK时如果请求出错,会有相应的错误信息在aos_status_s中输出。aos_status_s有以下几个属性:
错误码 | 描述 |
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 | 请求超时 |
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用阿里云OSS C SDK进行文件操作时,正确处理超时和错误码是确保程序健壮性的重要环节。根据您的描述,这里总结了如何判断和设置超时时间以及一些常见错误码的含义:
aos_status_s.code
为5XX,这通常意味着服务器端错误,可以考虑重试请求。aos_status_s.error_code
为-992
(链接超时)或-995
(请求超时)时,表示客户端与OSS服务之间的连接或请求过程中发生了超时。aos_should_retry(aos_status_t *)
函数,如果返回值为1,则表示当前错误情况建议进行重试。options->ctl->options->connect_timeout
来设定,单位为秒,默认为10秒。options->ctl->options->dns_cache_timeout
,单位也是秒,默认60秒。options->ctl->options->speed_limit
),默认为1K/秒;二是最长时间容忍(options->ctl->options->speed_time
),默认为15秒。这意味着如果连续15秒内传输速率低于1K/秒,则认为超时。您已经列出了一系列常见的错误码,这些错误码对于诊断问题非常关键。例如: - AccessDenied
:表明访问被拒绝,可能是因为权限不足。 - BucketAlreadyExists
:尝试创建的Bucket已存在。 - NoSuchBucket
:指定的Bucket不存在。 - NoSuchKey
:尝试访问的Object(文件)不存在。 - RequestTimeout
:请求超时,即本次请求未能在预期时间内得到响应。 - SignatureDoesNotMatch
:签名验证失败,可能是由于访问密钥或签名算法错误。
了解并妥善处理这些错误码,可以帮助开发者更好地调试应用程序,提高与OSS交互的稳定性和效率。在遇到问题时,记得查看req_id
,它对于获取阿里云技术支持的帮助至关重要。