OSS Java SDK には、ClientException と OSSException の 2 種類の例外があります。 ともに RuntimeException のプロパティを共有します。

例外処理の例

次のコードを実行し、例外を処理します。

try {
    // Perform operations on OSS, for example, object uploads.
    ossClient.putObject(...);
} catch (Exception e) {
    System.out.println("Caught an OSSException, which means your request made it to OSS, "
            + "but was rejected with an error response for some reason.") ;
    System.out.println("Error Message: " + oe.getErrorCode());
    System.out.println("Error Code:       " + oe.getErrorCode());
    System.out.println("Request ID:      " + oe.getRequestId());
    System.out.println("Host ID:           " + oe.getHostId());
} catch (ClientException e) {
    System.out.println("Caught an ClientException, which means the client encountered "
            + "a serious internal problem while trying to communicate with OSS, "
            + "such as not being able to access the network.") ;
    System.out.println("Error Message: " + ce.getMessage());
} finally {
    if (ossClient ! = null) {
        ossClient.shutdown();
    }
}

ClientException

ClientException 例外は、クライアントがリクエストを送信しようとしたとき、およびデータが OSS に送信されたときに発生します。 たとえば、リクエストが送信されると、利用できないネットワーク接続が原因で ClientException が発生することがあります。 I/O 例外のため、ファイルのアップロード中に ClientException が発生することがあります。

OSSException

OSSException は、サーバー例外を示します。 サーバーエラーメッセージが解析されることが原因で、例外が発生します。 OSSException には、OSS から返されたエラーコードと情報が含まれます。 OSSException は問題を見つけて処理するために使用されます。

次の表に、一般的な OSSException の情報を示します。

パラメーター 説明
Code OSS から返されたエラーコードを特定します。
Message OSS から返される詳細なエラー情報を特定します。
RequestId UUID を特定します。 UUID は固有のものであり、リクエストを識別するために使用されます。 問題が解決しない場合は、OSS 開発者に "RequestId" を送り、問い合わせます。
HostId OSS クラスターを識別します。 "HostId" の値が、リクエストで使用されているホスト (バケットにアクセスするためのエンドポイント) と一致していることを確認してください。

OSS エラーコード

エラーコード 説明 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 ログファイルを格納するバケットが無効です。 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 OSSClient に設定されている現地時間が、OSS サーバーに設定されている時間から 15 分以上ずれています。 403
RequestTimeout リクエストがタイムアウトされました。 400
SignatureDoesNotMatch 署名が不一致です。 403
InvalidEncryptionAlgorithmError 指定された暗号化アルゴリズム(エントロピー符号化タイプ)が無効です。 400