异常处理

更新时间:

本文将为您介绍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);
        }
    }
}