异常处理
本节主要介绍升级版 SDK 的异常种类以及对于异常的处理。
升级版 SDK 的将异常的种类进行了一定的细分,主要细分为以下几个 Error:
UnretryableError:该异常主要是因为网络问题造成,一般是网络问题造成达到最大重试次数后抛出,可以通过
err.data.lastRequest
来查询错误发生时的请求信息。在 SDK 的请求中主要以业务报错为主的异常,该异常的示例中提供了三个参数为用户排查问题提供帮助:
code: OpenAPI 业务报错的错误码。
message:OpenAPI 业务报错的错误信息,其中会包含本次请求的 RequestId。
data:OpenAPI 报错后服务端返回的详细信息。
TypeScript 版:
import Facebody20191230, * as $Facebody20191230 from '@alicloud/facebody20191230'; import * as $OpenApi from '@alicloud/openapi-client'; import * as $Util from '@alicloud/tea-util'; import { createReadStream } from 'fs'; export default class Client { static async main(): Promise<void> { const config = new $OpenApi.Config({ // 您的AccessKey ID accessKeyId: 'AccessKeyId', // 您的AccessKey Secret accessKeySecret: 'AccessKeySecret', // 访问的区域 regionId: 'RegionId' }); const client = new Facebody20191230(config); const request = new $Facebody20191230.DetectBodyCountAdvanceRequest({ imageURLObject: createReadStream("本地文件路径"), }); // 创建RuntimeObject实例并设置运行参数。 const runtime = new $Util.RuntimeOptions({}); try { const resp = await client.DetectBodyCountAdvance(request, runtime); console.log(resp.headers); console.log(resp.body); } catch (err) { if (err instanceof UnretryableError) { console.log(err.data.lastRequest); } else { console.log(err.code); console.log(err.message); console.log(err.data); } } } }
JavaScript 版:
const { default: Facebody20191230, DetectBodyCountAdvanceRequest } = require('@alicloud/ecs20140526'); const { Config } = require('@alicloud/openapi-client'); const { RuntimeOptions } = require('@alicloud/tea-util'); const { createReadStream } = require('fs'); async function main() { const config = new Config({ // 您的AccessKey ID accessKeyId: 'AccessKeyId', // 您的AccessKey Secret accessKeySecret: 'AccessKeySecret', // 访问的区域 regionId: 'RegionId' }); const client = new Facebody20191230(config); const request = new DetectBodyCountAdvanceRequest({ imageURLObject: createReadStream("本地文件路径"), }); // 创建RuntimeObject实例并设置运行参数。 const runtime = new RuntimeOptions({}); try { const resp = await client.DetectBodyCountAdvance(request, runtime); console.log(resp.headers); console.log(resp.body); } catch (err) { if (err instanceof UnretryableError) { console.log(err.data.lastRequest); } else { console.log(err.code); console.log(err.message); console.log(err.data); } } }