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 |