全部产品
Search
文档中心

Object Storage Service:Menangani exception (Python SDK V1)

更新时间:Nov 29, 2025

Exception OSS Python SDK (OssError) terbagi menjadi tiga kategori: ClientError, RequestError, dan ServerError. Exception ini didefinisikan dalam submodul oss2.exceptions.

Tabel berikut menjelaskan variabel dan tipe data untuk exception tersebut.

Variable

Type

Description

status

int

  • Untuk exception ServerError, `status` adalah kode status HTTP.

  • Untuk exception ClientError dan RequestError, `status` merupakan bidang statis.

request_id

str

  • Untuk exception ServerError, server OSS mengembalikan request ID.

  • Untuk exception ClientError dan RequestError, `request_id` berupa string kosong.

code and message

str

Teks dari tag XML `Code` dan `Message` dalam format tanggapan error OSS.

Contoh penanganan exception

Kode berikut menunjukkan cara menangani exception saat mengunduh file yang tidak ada, dengan mencetak kode status HTTP dan request ID dari pesan error.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tetapkan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tetapkan wilayah yang sesuai dengan Endpoint, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk signature V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

try:
    # Tetapkan nama file yang akan diunduh, misalnya exampleobject.txt.
    stream = bucket.get_object('exampleobject.txt')
except oss2.exceptions.NoSuchKey as e:
    print('status={0}, request_id={1}'.format(e.status, e.request_id))            

ClientError

ClientError terjadi akibat input klien yang tidak valid. Misalnya, exception ini dilemparkan jika Anda memberikan daftar file kosong ke metode `bucket.batch_delete_objects`. Nilai `status` untuk ClientError adalah `oss2.exceptions.OSS_CLIENT_ERROR_STATUS`.

RequestError

Ketika library HTTP melemparkan exception, Python SDK mengonversinya menjadi RequestError. Nilai `status` untuk RequestError adalah `oss2.exceptions.OSS_REQUEST_ERROR_STATUS`.

ServerError

Ketika server OSS mengembalikan kode error HTTP, Python SDK mengonversinya menjadi ServerError. ServerError memiliki beberapa kelas turunan yang diturunkan dari kode status HTTP dan kode error OSS. Sebagai contoh, kelas turunan NotFound mencakup semua exception 404, sedangkan kelas turunan Conflict mencakup semua exception 409.

Tabel berikut mencantumkan kode error umum.

Exception class

HTTP status code

OSS error code

Description

NotModified

304

Empty

Saat menggunakan unduhan bersyarat, waktu yang ditentukan oleh parameter `If-Modified-Since` lebih baru daripada waktu modifikasi aktual objek.

InvalidArgument

400

InvalidArgument

Saat melakukan unggah multi-bagian, Anda tidak dapat menentukan body jika `x-oss-complete-all:yes` juga ditentukan. Jika Anda melakukannya, terjadi error.

AccessDenied

403

AccessDenied

Anda tidak memiliki izin akses yang diperlukan.

NoSuchBucket

404

NoSuchBucket

Bucket tidak ada.

NoSuchKey

404

NoSuchKey

File tidak ada.

NoSuchUpload

404

NoSuchUpload

Saat melakukan unggah multi-bagian atau unggah yang dapat dilanjutkan, beberapa bagian berhasil diunggah, tetapi proses unggah belum selesai.

NoSuchWebsite

404

NoSuchWebsiteConfiguration

Hosting website statis belum dikonfigurasi untuk bucket tersebut.

NoSuchLifecycle

404

NoSuchLifecycle

Tidak ada aturan siklus hidup yang dikonfigurasi untuk bucket tersebut.

NoSuchCors

404

NoSuchCORSConfiguration

Berbagi sumber daya lintas origin (CORS) belum dikonfigurasi untuk bucket tersebut.

BucketNotEmpty

409

BucketNotEmpty

Bucket yang ingin Anda hapus berisi objek, tugas unggah multi-bagian yang belum lengkap, atau LiveChannels yang belum dihapus.

PositionNotEqualToLength

409

PositionNotEqualToLength

Nilai `Position` tidak sesuai dengan panjang objek saat ini.

ObjectNotAppendable

409

ObjectNotAppendable

File saat ini bukan objek Appendable.