本文介绍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 |