本文介绍OSS C SDK的错误处理。

异常处理

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

错误码描述字符类型
code出错请求的HTTP状态码。整型
error_codeOSS的错误码。字符串
error_msgOSS的错误信息。字符串
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
InvalidAccessKeyIdAccessKeyId不存在403
InvalidBucketName无效的存储空间名称400
InvalidDigest无效的摘要400
InvalidObjectName无效的文件名称400
InvalidPart无效的分片400
InvalidPartOrder无效的分片顺序400
InvalidTargetBucketForLoggingLogging操作中有无效的目标存储空间400
InternalErrorOSS内部错误500
MalformedXMLXML格式非法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