阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

異常處理

更新時間: Oct 19, 2018

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

異常處理樣本

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

  1. try {
  2. // OSS操作,例如上傳檔案
  3. ossClient.putObject(...);
  4. } catch (OSSException oe) {
  5. System.out.println("Caught an OSSException, which means your request made it to OSS, "
  6. + "but was rejected with an error response for some reason.");
  7. System.out.println("Error Message: " + oe.getErrorCode());
  8. System.out.println("Error Code: " + oe.getErrorCode());
  9. System.out.println("Request ID: " + oe.getRequestId());
  10. System.out.println("Host ID: " + oe.getHostId());
  11. } catch (ClientException ce) {
  12. System.out.println("Caught an ClientException, which means the client encountered "
  13. + "a serious internal problem while trying to communicate with OSS, "
  14. + "such as not being able to access the network.");
  15. System.out.println("Error Message: " + ce.getMessage());
  16. } finally {
  17. if (ossClient != null) {
  18. ossClient.shutdown();
  19. }
  20. }

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 AccessKeyId不存在 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