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