本文為您介紹V2.0 PHP SDK中的異常類型。
V2.0 SDK將異常的種類進行了一定的細分,主要細分為以下幾個:
InvalidArgumentException:該異常通常在初始化用戶端時,沒有填寫必填參數或是填寫的參數類型不符的情況下拋出,可通過查看異常的
message
來定位錯誤資訊。TeaUnretryableException:該異常主要是因為網路問題造成,一般是網路問題造成達到最大重試次數後拋出,可以通過
getLastException
來查詢錯誤發生時的請求資訊。TeaError:在SDK的請求中主要以業務報錯為主的異常,該異常的樣本中提供了三個參數,為使用者排查問題提供協助:
code: OpenAPI業務報錯的錯誤碼。
message: OpenAPI業務報錯的錯誤資訊,其中會包含本次請求的RequestId。
data: OpenAPI報錯後服務端返回的詳細資料。
重要
樣本中僅做列印展示。請重視異常處理,切勿在專案中直接忽略異常。建議採取合理的措施來處理異常,比如合理地傳播異常、記錄日誌、嘗試恢複等,以確保系統的健壯性和穩定性。
<?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) {
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
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();