全部產品
Search
文件中心

Alibaba Cloud SDK:異常處理

更新時間:May 13, 2025

本文將為您介紹V2.0 Node.js SDK的異常種類以及對異常的處理。

V2.0 Node.js SDK的異常統一返回Error來處理。SDK內部出現的異常可以細分為以下幾個Error:

  • UnretryableError:該異常主要是因為網路問題造成,一般是網路問題造成達到最大重試次數後拋出,可以通過err.data.lastRequest來查詢錯誤發生時的請求資訊。

  • ResponseError:在SDK的請求中主要以業務報錯為主的異常,該異常的樣本中提供了三個參數為使用者排查問題提供協助:

    • code: OpenAPI業務報錯的錯誤碼。

    • message:OpenAPI業務報錯的錯誤資訊,其中會包含本次請求的RequestId。

    • data:OpenAPI報錯後服務端返回的詳細資料。

程式碼範例

重要

樣本中僅做列印展示。請重視異常處理,切勿在專案中直接忽略異常。建議採取合理的措施來處理異常,比如合理地傳播異常、記錄日誌、嘗試恢複等,以確保系統的健壯性和穩定性。

const { default: Ecs20140526, DescribeRegionsRequest } = require('@alicloud/ecs20140526');
const { Config } = require('@alicloud/openapi-client');
const { RuntimeOptions } = require('@alicloud/tea-util');
async function main() {
    const config = new Config({
        // 從環境變數中擷取RAM使用者的AccessKey ID
        accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
        // 從環境變數中擷取RAM使用者的AccessKey Secret
        accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
        // 訪問的地區
        regionId: 'cn-beijing',
    });
    const client = new Ecs20140526(config);
    const request = new DescribeRegionsRequest({
        instanceChargeType: "PrePaid",
    });
    // 建立RuntimeOptions執行個體並設定運行參數。
    const runtime = new RuntimeOptions();
    try {
        const resp = await client.describeRegionsWithOptions(request, runtime);
        console.log(resp.headers);
        console.log(resp.body);
    } catch (err) {
        // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
        console.log(err.code);
        console.log(err.message);
        console.log(err.data);
    }
}

main();
import Ecs20140526, * as $Ecs20140526 from '@alicloud/ecs20140526';
import * as $OpenApi from '@alicloud/openapi-client';
import * as $Util from '@alicloud/tea-util';

export default class Client {
    static async main(): Promise<void> {
        const config = new $OpenApi.Config({
            // 從環境變數中擷取RAM使用者的AccessKey ID
            accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
            // 從環境變數中擷取RAM使用者的AccessKey Secret
            accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
            // 訪問的地區
            regionId: 'cn-beijing',
        });
        const client = new Ecs20140526(config);
        const request = new $Ecs20140526.DescribeRegionsRequest({
            instanceChargeType: "PrePaid",
        });
        // 建立RuntimeOptions執行個體並設定運行參數。
        const runtime = new $Util.RuntimeOptions();
        try {
            const resp = await client.describeRegionsWithOptions(request, runtime);
            console.log(resp.headers);
            console.log(resp.body);
        } catch (err) {
            // 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
            console.log(err.code);
            console.log(err.message);
            console.log(err.data);
        }
    }
}