全部產品
Search
文件中心

Object Storage Service:Java異常處理

更新時間:Jul 20, 2024

OSS Java SDK包含兩類異常,一類是用戶端異常ClientException,另一類是伺服器端異常OSSException,這兩類異常均繼承自RuntimeException。

異常處理樣本

以下代碼用於展示異常處理:

try {
    // OSS操作,例如上傳檔案
    ossClient.putObject(...);
} catch (OSSException oe) {
    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.getErrorMessage());
    System.out.println("Error Code:       " + oe.getErrorCode());
    System.out.println("Request ID:      " + oe.getRequestId());
    System.out.println("Host ID:           " + oe.getHostId());
} catch (ClientException ce) {
    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。當上傳檔案時發生IO異常,也會拋出ClientException。

OSSException

OSSException指伺服器端異常,即對伺服器錯誤資訊的解析。OSSException包含OSS返回的錯誤碼和錯誤資訊,便於定位問題,並做出適當的處理。

OSSException通常包含以下錯誤資訊:

參數

描述

Code

OSS返回的錯誤碼。

Message

OSS返回的詳細錯誤資訊。

RequestId

用於唯一標識該請求的UUID。當您無法解決問題時,可以提供RequestId來請求OSS開發工程師的協助。

HostId

用於標識訪問的OSS叢集,與請求時使用的Host一致。

OSS常見錯誤碼

錯誤碼

描述

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

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

InvalidEncryptionAlgorithmError

指定的熵編碼密碼編譯演算法錯誤

400