このトピックでは、OSS SDK for Cを使用するときにエラーを処理する方法について説明します。
例外処理
OSS SDK for Cを使用してリクエストを送信するときにエラーが発生した場合、対応するエラーメッセージがaos_status_sで返されます。 次の表に、aos_status_sで返されるエラーを示します。
エラーコード | 説明 | Type |
code | エラーリクエストのHTTPステータスコード。 | Integer |
error_code | OSSから返されたエラーコード。 | String |
error_msg | OSSから返されたエラーメッセージ。 | String |
req_id | リクエストを識別する UUID | String |
タイムアウト処理
返された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 |
内部エラー | 内部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 |