このトピックでは、Node.js 用 Alibaba Cloud SDK V2.0 の例外の種類と例外の処理方法について説明します。
Alibaba Cloud SDK V2.0 for Node.js の使用時に例外が発生した場合、エラーがスローされます。例外は、次のタイプに分類できます。
UnretryableError: このタイプの例外は、ネットワークの問題が原因で発生します。リトライ回数が上限に達すると、UnretryableError がスローされます。
err.data.lastRequestを使用して、例外発生時のリクエスト情報を取得できます。ResponseError: このタイプの例外は、ビジネスエラーが原因で発生します。エラーのトラブルシューティングのために、次の 3 つのパラメーターが提供されます。
code: 例外発生時に返されるエラーコード。
message: 例外発生時に返されるエラーメッセージ。メッセージには、例外がスローされた API リクエストの ID が含まれています。
data: 例外に対してサーバーから返される詳細なエラー情報。
サンプルコード:
重要
この例では、エラーメッセージは参照用にのみ出力されます。実際のビジネスシナリオでは、例外を慎重に処理し、プロジェクトで例外を無視しないでください。適切な方法で例外を伝播する、ログを記録する、リトライを実行するなど、例外を処理するための合理的な対策を講じることをお勧めします。これは、システムの堅牢性と安定性を確保するのに役立ちます。
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 シークレットを環境変数から取得します。
accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
// リージョン ID。
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 シークレットを環境変数から取得します。
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);
}
}
}