このトピックでは、OSS SDK for C を使用する際のエラー処理方法について説明します。
例外処理
OSS SDK for C を使用してリクエストを送信する際にエラーが発生した場合、対応するエラーメッセージが `aos_status_s` で返されます。 次の表に、`aos_status_s` で返されるエラーを示します。
エラーコード | 説明 | 型 |
code | エラーリクエストの HTTP ステータスコード。 | 整数 |
error_code | OSS から返されるエラーコード。 | 文字列 |
error_msg | OSS から返されるエラーメッセージ。 | 文字列 |
req_id | リクエストを識別する UUID。 | 文字列 |
タイムアウト処理
返された `aos_status_t` パラメーターの HTTP ステータスコードが 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 | ロギング用のバケットが無効です。 | 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 クライアントと OSS サーバーの時刻のずれが 15 分を超えています。 | 403 |
RequestTimeout | リクエストがタイムアウトしました。 | 400 |
SignatureDoesNotMatch | 署名エラーが発生しました。 | 403 |
TooManyBuckets | バケット数が制限を超えています。 | 400 |