閱讀526 返回首頁    go 阿裏雲


出錯處理__Python-SDK_SDK 參考_對象存儲 OSS-阿裏雲

在程序運行過程中,如果遇到錯誤,Python SDK會拋出相應的異常。 一共有三類異常:ClientError、RequestError和ServerError,它們都是OssError的子類。 這些異常都在oss2.exceptions子模塊中定義。

OssError一些重要的成員變量如下:

  • status:int類型。對於ServerError就是HTTP狀態碼;對於另外兩類異常,該值為固定值。
  • request_id:str類型。對於ServerError就是OSS服務器返回請求ID;對於另外兩類異常,該值為空字符串。
  • code和message:str類型。就是OSS的錯誤響應格式裏的Code和Message兩個XML Tag中的文本。

ClientError

ClientError是因用戶的輸入有誤引起的。比如,Bucket.batch_delete_objects當收到空的文件名列表時,就會拋出該異常。 ClientError對象的status值是固定的oss2.exceptions.OSS_CLIENT_ERROR_STATUS。

RequestError

當底層的HTTP庫拋出異常時,Python SDK會將其轉換為RequestError。這些異常對象的status值是固定的oss2.exceptions.OSS_REQUEST_ERROR_STATUS。

ServerError

當OSS服務器返回4xx或5xx的HTTP錯誤碼時,Python SDK會將OSS Server的響應轉換為ServerError。 為了方便使用,根據status和code,還派生出了一些子類:

異常類 對應的HTTP狀態碼 OSS錯誤碼 備注
NotModified 304 沒有修改
AccessDenied 403 AccessDenied 拒絕訪問
NoSuchBucket 404 NoSuchBucket Bucket不存在
NoSuchKey 404 NoSuchKey 文件名不存在
NoSuchUpload 404 NoSuchUpload 分片上傳不存在
NoSuchWebsite 404 NoSuchWebsiteConfiguration 靜態網站托管未配置
NoSuchLifecycle 404 NoSuchLifecycle 生命周期管理未配置
NoSuchCors 404 NoSuchCORSConfiguration CORS未配置
BucketNotEmpty 409 BucketNotEmpty Bucket非空
PositionNotEqualToLength 409 PositionNotEqualToLength Append的位置和文件長度不相等
ObjectNotAppendable 409 ObjectNotAppendable 不是可追加文件

另外,所有404狀態碼的異常都是NotFound的子類;所有409狀態碼的異常都是Conflict的子類。

注意 不是所有的OSS錯誤碼都有對應的異常。目前隻定義了比較常用的一些。

示例

下麵的代碼展示了下載一個文件時,如何處理文件名不存在的情形,並打印出HTTP狀態碼和請求ID:

# -*- coding: utf-8 -*-

import oss2

auth = oss2.Auth('您的AccessKeyId', '您的AccessKeySecret')
bucket = oss2.Bucket(auth, '您的Endpoint', '您的Bucket名')

try:
    stream = bucket.get_object('random-key.txt')
except oss2.exceptions.NoSuchKey as e:
    print('status={0}, request_id={1}'.format(e.status, e.request_id))

最後更新:2016-11-23 16:04:10

  上一篇:go 管理存儲空間__Python-SDK_SDK 參考_對象存儲 OSS-阿裏雲
  下一篇:go 中文和時間__Python-SDK_SDK 參考_對象存儲 OSS-阿裏雲