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:
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.
TeaUnretryableException: Pengecualian ini disebabkan oleh masalah jaringan dan dilemparkan ketika jumlah percobaan ulang mencapai batas maksimum. Gunakan
getLastExceptionuntuk mendapatkan informasi permintaan saat pengecualian terjadi.TeaError: Pengecualian ini disebabkan oleh kesalahan bisnis. Tiga parameter berikut tersedia untuk mendiagnosis kesalahan:
code: Kode kesalahan yang dikembalikan saat pengecualian terjadi.
message: Pesan kesalahan yang dikembalikan saat pengecualian terjadi, termasuk ID permintaan API tempat pengecualian dilemparkan.
data: Informasi kesalahan rinci yang dikembalikan oleh server untuk pengecualian tersebut.
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();