すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud SDK:例外の処理

最終更新日:Jan 15, 2025

このトピックでは、PHP 向け Alibaba Cloud SDK V2.0 の例外の種類と例外の処理方法について説明します。

PHP 向け Alibaba Cloud SDK V2.0 の使用時に発生する可能性のある例外は、以下の種類に分類できます。

  1. InvalidArgumentException: この例外は、SDK クライアントの初期化時に、必須パラメータの 1 つ以上が指定されていない場合、または指定された値が無効な場合に発生します。返されたエラーメッセージで例外の詳細を確認できます。

  2. TeaUnretryableException: この例外は、ネットワークの問題が原因で発生します。再試行回数が上限に達すると、TeaUnretryableException がスローされます。getLastException を使用して、例外発生時のリクエスト情報を取得できます。

  3. TeaError: この例外は、ビジネスエラーが原因で発生します。エラーのトラブルシューティングのために、次の 3 つのパラメータが提供されます。

    1. code: 例外発生時に返されるエラーコード。

    2. message: 例外発生時に返されるエラーメッセージ。メッセージには、例外がスローされた API リクエストの ID が含まれています。

    3. data: 例外に対してサーバーから返される詳細なエラー情報。

重要

この例では、エラーメッセージは参照用にのみ出力されます。実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。適切な方法で例外を伝播する、ログを記録する、再試行を実行するなど、例外を処理するための合理的な対策を講じることをお勧めします。これにより、システムの堅牢性と安定性を確保できます。

<?php

require_once 'vendor/autoload.php';
use AlibabaCloud\SDK\Ecs\V20140526\Ecs;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Ecs\V20140526\Models\DescribeInstancesRequest;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Exception\TeaUnableRetryError;

class ProxyDemo
{


    public static function main()
    {
        try {
            $config = new Config([
                "accessKeyId" => getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                "accessKeySecret" => getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                "endpoint" => "ecs.cn-beijing.aliyuncs.com", // <エンドポイント>
            ]);
            $client = new Ecs($config);

            $runtime = new RuntimeOptions([]);
            $describeInstancesRequest = new DescribeInstancesRequest([
                "regionId" => "cn-beijing"
            ]);
            $resp = $client->describeInstancesWithOptions($describeInstancesRequest, $runtime);
            var_dump($resp);
        } catch (\Exception $error) {
            if ($error instanceof TeaError) {
                // 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ出力されます。
                print_r("message:" . $error->getMessage() . "\n");
                print_r("code:" . $error->getCode() . "\n");
                print_r($error->data);
            } elseif ($error instanceof TeaUnableRetryError) {
                // 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ出力されます。
                print_r($error->getLastException());
            } else {
                // 実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。この例では、エラーメッセージは参照用にのみ出力されます。
                print_r("message:" . $error->getMessage());
            }
        }
    }
}
ProxyDemo::main();