本節主要介紹V2.0 SDK 的異常種類以及對於異常的處理。
異常種類
異常種類 | 說明 | 異常處理建議 |
UnretryableException | 網路問題造成的異常,一般是網路問題造成達到最大重試次數後拋出。 |
|
ClientException | 用戶端異常,HTTP狀態代碼範圍在400-499之間,例如請求參數錯誤、認證失敗、許可權不足等。 | 在Troubleshoot中,複製異常中的 |
ServerException | 服務端異常,HTTP狀態代碼範圍在500至599之間,指的是阿里雲出現的服務端問題,例如伺服器內部錯誤、服務不可用等情況。 | 請嘗試進行重試。如若經過多次重試仍無法解決問題,請聯絡我們尋求協助。 |
ThrottlingException | 限流異常,當API調用觸發阿里雲限流機制時拋出。 | 請根據API文檔中的限流說明,適當調整API調用的頻率。 |
其中ClientException、ServerException和ThrottlingException提供了以下參數,協助您進行問題排查:
request_id:本次請求唯一識別碼。
status_code:OpenAPI返回的HTTP狀態代碼。
code:OpenAPI報錯的錯誤碼。
message:OpenAPI報錯的錯誤資訊。
data:OpenAPI報錯後服務端返回的詳細資料。
範例程式碼:
樣本中僅做列印展示。請重視異常處理,切勿在專案中直接忽略異常。建議採取合理的措施來處理異常,比如合理地傳播異常、記錄日誌、嘗試恢複等,以確保系統的健壯性和穩定性。
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
'''雲端服務器樣本'''
# 初始化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)
# 初始化Request
request = DescribeImagesRequest(image_id='<IMAGE_ID>', region_id='<REGION_ID>')
response = client.describe_images(request)
except UnretryableException as e:
# 網路異常,此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
print(e)
except (ClientException, ServerException, ThrottlingException) as e:
# 用戶端異常,此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
print(f"RequestId:{e.request_id},StatusCode:{e.status_code},Message:{e.message},Data:{e.data}")
解決異常
在調用API的過程中出現異常時,您可以通過以下方式擷取協助:
在Troubleshoot中複製異常中的RequestId進行異常診斷,擷取異常產生的原因及其解決方案。更多資訊,請參見OpenAPI錯誤診斷。
根據異常中的錯誤碼,請在相應產品的協助中心文檔中尋找解決方案。例如,關於Elastic Compute Service的錯誤碼,請參見公用錯誤碼。
在常見問題中查看是否有對應的解決方案。
聯絡我們協助解決。