このトピックでは、V2.0 SDK の例外タイプとその処理方法について説明します。
例外タイプ
例外タイプ | 説明 | 推奨される操作 |
UnretryableException | ネットワークの問題によって発生する例外です。この例外は通常、ネットワークの問題が原因で最大リトライ回数に達したときにスローされます。 |
|
ClientException | クライアント例外です。HTTP ステータスコードは 400 から 499 の範囲です。この例外は、無効なリクエストパラメーター、認証の失敗、権限の不足などの問題によって発生する可能性があります。 | トラブルシューティングで、例外から |
ServerException | サーバー例外です。HTTP ステータスコードは 500 から 599 の範囲です。この例外は、内部サーバーエラーや利用不可能なサービスなど、Alibaba Cloud 側のサーバーサイドの問題を示します。 | 操作をリトライします。複数回リトライしても問題が解決しない場合は、お問い合わせください。 |
ThrottlingException | スロットリング例外です。この例外は、API 呼び出しが Alibaba Cloud のスロットリングメカニズムをトリガーしたときにスローされます。 | API ドキュメントのスロットリング制限に準拠するように API 呼び出しの頻度を調整します。 |
「ClientException」、「ServerException」、および「ThrottlingException」は、問題のトラブルシューティングに役立つ次のパラメーターを提供します。
request_id: リクエストの一意の識別子。
status_code: OpenAPI によって返される HTTP ステータスコード。
code: OpenAPI によって返されるエラーコード。
message: OpenAPI によって返されるエラーメッセージ。
data: エラー発生時にサーバーから返される詳細情報。
サンプルコード:
この例では、エラーメッセージは参照用にのみ表示されます。実際のビジネスシナリオでは、プロジェクト内の例外を無視しないでください。例外の報告、ログの記録、リトライの実行などの操作を行って例外を適切に処理することをお勧めします。これにより、システムの堅牢性と安定性が確保されます。
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 の例'''
# 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 を呼び出すときに例外が発生した場合は、次の方法でヘルプを得ることができます。
トラブルシューティングで、例外から RequestId をコピーしてエラーを診断し、その原因とソリューションを見つけます。詳細については、「OpenAPI トラブルシューティング」をご参照ください。
例外のエラーコードに基づいて、関連するプロダクトドキュメントでソリューションを見つけます。たとえば、ECS のエラーコードについては、「一般的なエラーコード」をご参照ください。
よくある質問でソリューションが利用可能かどうかを確認します。
サポートが必要な場合は、お問い合わせください。