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

出錯處理

更新時間: Oct 19, 2018

異常處理

使用OSS C SDK時如果請求出錯,會有相應的錯誤資訊在aos_status_s中輸出。aos_status_s有以下幾個屬性:

  • code: 出錯請求的HTTP狀態碼,整形類型。
  • error_code: OSS的錯誤碼,字元串類型。
  • error_msg: OSS的錯誤資訊,字元串類型。
  • req_id: 標識該次請求的UUID;當您無法解決問題時,可以憑這個req_id來請求OSS開發工程師的幫助,字元串類型。

逾時處理

如何判斷逾時

  • 如果返回的aos_status_t中的code為5XX,表示伺服器內部錯誤,可以重試。
  • 如果返回的aos_status_t中的code不等於2XX,且error_code為-992或者-995時,表示連結逾時或請求逾時,可以重試。
  • 可以使用aos_status.h中的aos_should_retry(aos_status_t *)判斷返回的錯誤碼是否需要重試,如果返回1,表示需要重試。

如何設定逾時時間

  • 設定連結逾時:options->ctl->options->connect_timeout,單位秒,預設是10秒。
  • 設定DNS逾時:options->ctl->options->dns_cache_timeout,單位秒,預設是60秒。
  • 佈建要求逾時:
    • 通過設定options->ctl->options->speed_limit的值控制能容忍的最小速率,預設是1024,即1K。
    • 通過設定options->ctl->options->speed_time的值控制能容忍的最長時間,預設是15秒。
    • 如果使用了上述預設值,表示如果連續15秒的傳輸速率小於1K,則逾時。

常見錯誤碼

錯誤碼 描述
AccessDenied 拒絕訪問
BucketAlreadyExists Bucket已經存在
BucketNotEmpty Bucket不為空
EntityTooLarge 實體過大
EntityTooSmall 實體過小
FileGroupTooLarge 檔案組過大
FilePartNotExist 檔案Part不存在
FilePartStale 檔案Part過時
InvalidArgument 參數格式錯誤
InvalidAccessKeyId AccessKeyId不存在
InvalidBucketName 無效的Bucket名字
InvalidDigest 無效的摘要
InvalidObjectName 無效的Object名字
InvalidPart 無效的Part
InvalidPartOrder 無效的part順序
InvalidTargetBucketForLogging Logging操作中有無效的目標bucket
InternalError OSS內部發生錯誤
MalformedXML XML格式非法
MethodNotAllowed 不支援的方法
MissingArgument 缺少參數
MissingContentLength 缺少內容長度
NoSuchBucket Bucket不存在
NoSuchKey 檔案不存在
NoSuchUpload Multipart Upload ID不存在
NotImplemented 無法處理的方法
PreconditionFailed 預先處理錯誤
RequestTimeTooSkewed 發起請求的時間和伺服器時間超出15分鐘
RequestTimeout 請求逾時
SignatureDoesNotMatch 簽名錯誤
TooManyBuckets 使用者的Bucket數目超過限制