Topik ini menjelaskan jenis-jenis pengecualian pada SDK V2.0 dan cara menanganinya.
Jenis pengecualian
Jenis pengecualian | Deskripsi | Aksi yang disarankan |
UnretryableException | Pengecualian yang disebabkan oleh masalah jaringan, biasanya muncul ketika jumlah maksimum percobaan ulang telah tercapai akibat gangguan jaringan. |
|
ClientException | Pengecualian klien dengan kode status HTTP dalam rentang 400–499, yang dapat disebabkan oleh parameter permintaan tidak valid, kegagalan autentikasi, atau izin yang tidak mencukupi. | Di Troubleshoot, salin |
ServerException | Pengecualian server dengan kode status HTTP dalam rentang 500–599, yang menunjukkan adanya masalah di sisi server Alibaba Cloud, seperti kesalahan internal server atau layanan yang tidak tersedia. | Coba ulang operasi tersebut. Jika masalah tetap berlanjut setelah beberapa kali percobaan ulang, hubungi kami untuk mendapatkan bantuan. |
ThrottlingException | Pengecualian pembatasan laju (throttling) yang muncul ketika pemanggilan API memicu mekanisme throttling Alibaba Cloud. | Sesuaikan frekuensi pemanggilan API Anda agar sesuai dengan batas throttling yang tercantum dalam dokumentasi API. |
ClientException, ServerException, dan ThrottlingException menyediakan parameter berikut untuk membantu Anda memecahkan masalah:
request_id: Pengidentifikasi unik dari permintaan.
status_code: Kode status HTTP yang dikembalikan oleh OpenAPI.
code: Kode kesalahan yang dikembalikan oleh OpenAPI.
message: Pesan kesalahan yang dikembalikan oleh OpenAPI.
data: Informasi detail yang dikembalikan oleh server saat kesalahan terjadi.
Kode contoh:
Dalam contoh ini, pesan kesalahan hanya ditampilkan sebagai referensi. Dalam skenario bisnis sebenarnya, jangan mengabaikan pengecualian dalam proyek Anda. Kami menyarankan agar Anda menangani pengecualian secara tepat dengan tindakan seperti melaporkan pengecualian, mencatat log, dan melakukan percobaan ulang guna memastikan ketangguhan dan stabilitas sistem Anda.
import os
from alibabacloud_ecs20140526.client import Client
from alibabacloud_ecs20140526.models import DescribeImagesRequest
from alibabacloud_tea_openapi.exceptions import (
ClientException,
ServerException,
ThrottlingException
)
from alibabacloud_tea_openapi.models import Config
from darabonba.exceptions import UnretryableException
'''Elastic Compute Service example'''
# Initialize Config.
config = Config(
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
region_id='<REGION_ID>'
)
try:
client = Client(config)
# Initialize Request.
request = DescribeImagesRequest(image_id='<IMAGE_ID>', region_id='<REGION_ID>')
response = client.describe_images(request)
except UnretryableException as e:
# A network exception occurred. This example only prints the exception. Handle exceptions with care. Do not ignore them in your projects.
print(e)
except (ClientException, ServerException, ThrottlingException) as e:
# A client exception occurred. This example only prints the exception. Handle exceptions with care. Do not ignore them in your projects.
print(f"RequestId:{e.request_id},StatusCode:{e.status_code},Message:{e.message},Data:{e.data}")
Menyelesaikan pengecualian
Jika terjadi pengecualian saat memanggil API, Anda dapat memperoleh bantuan melalui cara berikut:
Di Troubleshoot, salin RequestId dari pengecualian untuk mendiagnosis kesalahan serta menemukan penyebab dan solusinya. Untuk informasi selengkapnya, lihat OpenAPI Troubleshoot.
Temukan solusi dalam dokumentasi produk terkait berdasarkan kode kesalahan dalam pengecualian tersebut. Misalnya, untuk kode kesalahan ECS, lihat Kode kesalahan umum.
Periksa apakah tersedia solusi di FAQ.
Hubungi kami untuk mendapatkan bantuan.