本文介绍OSS C SDK的错误处理。
异常处理
使用OSS C SDK时,如果请求出错,会在aos_status_s中输出相应的错误信息。aos_status_s包含以下信息。
错误码 | 描述 | 字符类型 |
code | 出错请求的HTTP状态码。 | 整型 |
error_code | OSS的错误码。 | 字符串 |
error_msg | OSS的错误信息。 | 字符串 |
req_id | 标识该次请求的UUID。 | 字符串 |
超时处理
如果返回的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 | AccessKey ID不存在 | 403 |
InvalidBucketName | 无效的存储空间名称 | 400 |
InvalidDigest | 无效的摘要 | 400 |
InvalidObjectName | 无效的文件名称 | 400 |
InvalidPart | 无效的分片 | 400 |
InvalidPartOrder | 无效的分片顺序 | 400 |
InvalidTargetBucketForLogging | 日志转存操作中指定用于存储日志记录的Bucket无效 | 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 |