本文介绍OSS 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不等于2XX,且error_code为-992或者-995时,表示链接超时或请求超时,可以重试。

使用aos_status.h中的aos_should_retry(aos_status_t *),判断返回的错误码是否需要重试。如果返回1,表示需要重试。

常见错误码

错误码 描述 HTTP 状态码
AccessDenied 拒绝访问 403
BucketAlreadyExists 存储空间已经存在 409
BucketNotEmpty 存储空间非空 409
EntityTooLarge 实体过大 400
EntityTooSmall 实体过小 400
FileGroupTooLarge 文件组过大 400
FilePartNotExist 文件分片不存在 400
FilePartStale 文件分片过时 400
InvalidArgument 参数格式错误 400
InvalidAccessKeyId AccessKeyId不存在 403
InvalidBucketName 无效的存储空间名称 400
InvalidDigest 无效的摘要 400
InvalidObjectName 无效的文件名称 400
InvalidPart 无效的分片 400
InvalidPartOrder 无效的分片顺序 400
InvalidTargetBucketForLogging Logging操作中有无效的目标存储空间 400
InternalError OSS内部错误 500
MalformedXML XML格式非法 400
MethodNotAllowed 不支持的方法 405
MissingArgument 缺少参数 411
MissingContentLength 缺少内容长度 411
NoSuchBucket 存储空间不存在 404
NoSuchKey 文件不存在 404
NoSuchUpload 分片上传ID不存在 404
NotImplemented 无法处理的方法 501
PreconditionFailed 预处理错误 412
RequestTimeTooSkewed 客户端本地时间和OSS服务器时间相差超过15分钟 403
RequestTimeout 请求超时 400
SignatureDoesNotMatch 签名错误 403
TooManyBuckets 用户的存储空间数超过限制 400