本节主要介绍V2.0 SDK的异常种类以及对异常的处理。
V2.0 Node.js SDK的异常统一返回Error来处理。SDK内部出现的异常可以细分为以下几个Error:
UnretryableError:该异常主要是因为网络问题造成,一般是网络问题造成达到最大重试次数后抛出,可以通过
err.data.lastRequest
来查询错误发生时的请求信息。ResponseError:在SDK的请求中主要以业务报错为主的异常,该异常的示例中提供了三个参数为用户排查问题提供帮助:
code: OpenAPI业务报错的错误码。
message:OpenAPI业务报错的错误信息,其中会包含本次请求的RequestId。
data:OpenAPI报错后服务端返回的详细信息。
TypeScript示例:
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", }); // 创建RuntimeObject实例并设置运行参数。 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); } } }
JavaScript示例:
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", }); // 创建RuntimeObject实例并设置运行参数。 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();