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發(fā)送請求以及數(shù)據(jù)傳輸時遇到的異常。例如,當發(fā)送請求時網(wǎng)絡連接不可用,則會拋出ClientException。當上傳文件時發(fā)生IO異常,也會拋出ClientException。
OSSException
OSSException指服務器端異常,即對服務器錯誤信息的解析。OSSException包含OSS返回的錯誤碼和錯誤信息,便于定位問題,并做出適當?shù)奶幚怼?/p>
OSSException通常包含以下錯誤信息:
參數(shù) | 描述 |
Code | OSS返回的錯誤碼。 |
Message | OSS返回的詳細錯誤信息。 |
RequestId | 用于唯一標識該請求的UUID。當您無法解決問題時,可以提供RequestId來請求OSS開發(fā)工程師的幫助。 |
HostId | 用于標識訪問的OSS集群,與請求時使用的Host一致。 |
OSS常見錯誤碼
錯誤碼 | 描述 | HTTP狀態(tài)碼 |
AccessDenied | 拒絕訪問 | 403 |
BucketAlreadyExists | 存儲空間已存在 | 409 |
BucketNotEmpty | 存儲空間非空 | 409 |
EntityTooLarge | 實體過大 | 400 |
EntityTooSmall | 實體過小 | 400 |
FileGroupTooLarge | 文件組過大 | 400 |
FilePartNotExist | 文件分片不存在 | 400 |
FilePartStale | 文件分片過時 | 400 |
InvalidArgument | 參數(shù)格式錯誤 | 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 | 缺少參數(shù) | 411 |
MissingContentLength | 缺少內容長度 | 411 |
NoSuchBucket | 存儲空間不存在 | 404 |
NoSuchKey | 文件不存在 | 404 |
NoSuchUpload | 分片上傳ID不存在 | 404 |
NotImplemented | 無法處理的方法 | 501 |
PreconditionFailed | 預處理錯誤 | 412 |
RequestTimeTooSkewed | 客戶端本地時間和OSS服務器時間相差超過15分鐘 | 403 |
RequestTimeout | 請求超時 | 400 |
SignatureDoesNotMatch | 簽名錯誤 | 403 |
InvalidEncryptionAlgorithmError | 指定的熵編碼加密算法錯誤 | 400 |