全部产品
Search
文档中心

Alibaba Cloud SDK:Menangani pengecualian

更新时间:Jun 28, 2025

Topik ini menjelaskan jenis-jenis pengecualian dalam Alibaba Cloud SDK V2.0 untuk PHP dan cara menanganinya.

Pengecualian yang mungkin terjadi saat menggunakan Alibaba Cloud SDK V2.0 untuk PHP dikategorikan sebagai berikut:

  1. InvalidArgumentException: Pengecualian ini terjadi jika parameter yang diperlukan tidak ditentukan atau nilainya tidak valid saat menginisialisasi klien SDK. Detail pengecualian dapat ditemukan dalam pesan kesalahan yang dikembalikan.

  2. TeaUnretryableException: Pengecualian ini disebabkan oleh masalah jaringan dan dilemparkan ketika jumlah percobaan ulang mencapai batas maksimum. Gunakan getLastException untuk mendapatkan informasi permintaan saat pengecualian terjadi.

  3. TeaError: Pengecualian ini disebabkan oleh kesalahan bisnis. Tiga parameter berikut tersedia untuk mendiagnosis kesalahan:

    1. code: Kode kesalahan yang dikembalikan saat pengecualian terjadi.

    2. message: Pesan kesalahan yang dikembalikan saat pengecualian terjadi, termasuk ID permintaan API tempat pengecualian dilemparkan.

    3. data: Informasi kesalahan rinci yang dikembalikan oleh server untuk pengecualian tersebut.

Penting

Dalam contoh ini, pesan kesalahan dicetak hanya untuk referensi. Dalam skenario bisnis aktual, tangani pengecualian dengan hati-hati dan jangan abaikan pengecualian dalam proyek Anda. Kami menyarankan Anda untuk mengambil langkah-langkah yang wajar, seperti menyebarkan pengecualian secara tepat, mencatat log, dan melakukan percobaan ulang, guna memastikan ketahanan dan stabilitas sistem.

<?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", // <endpoint>
            ]);
            $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) {
                // Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual Anda dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan dicetak hanya untuk referensi.
                print_r("message:" . $error->getMessage() . "\n");
                print_r("code:" . $error->getCode() . "\n");
                print_r($error->data);
            } elseif ($error instanceof TeaUnableRetryError) {
                // Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual Anda dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan dicetak hanya untuk referensi.
                print_r($error->getLastException());
            } else {
                // Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual Anda dan jangan abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan dicetak hanya untuk referensi.
                print_r("message:" . $error->getMessage());
            }
        }
    }
}
ProxyDemo::main();