异常处理

更新时间:

本节主要介绍V2.0 SDK 的异常种类以及对于异常的处理。

异常种类

异常种类

说明

异常处理建议

UnretryableException

网络问题造成的异常,一般是网络问题造成达到最大重试次数后抛出。

  1. 检查程序运行环境的网络是否存在问题。

  2. 若网络无问题,请尝试调大超时时间重试。

ClientException

客户端异常,HTTP状态码范围在400-499之间,例如请求参数错误、认证失败、权限不足等。

OpenAPI错误诊断中,复制异常中的RequestId进行诊断,并根据诊断方案进行相应处理。

ServerException

服务端异常,HTTP状态码范围在500599之间,指的是阿里云出现的服务端问题,例如服务器内部错误、服务不可用等情况。

请尝试进行重试。如若经过多次重试仍无法解决问题,请联系我们寻求帮助。

ThrottlingException

限流异常,当API调用触发阿里云限流机制时抛出。

请根据API文档中的限流说明,适当调整API调用的频率。

其中ClientException、ServerExceptionThrottlingException提供了以下参数,协助您进行问题排查:

  • request_id:本次请求唯一标识符。

  • status_code:OpenAPI返回的HTTP状态码。

  • code:OpenAPI报错的错误码。

  • message:OpenAPI报错的错误信息。

  • data:OpenAPI报错后服务端返回的详细信息。

示例代码:

重要

示例中仅做打印展示。请重视异常处理,切勿在项目中直接忽略异常。建议采取合理的措施来处理异常,比如合理地传播异常、记录日志、尝试恢复等,以确保系统的健壮性和稳定性。

import os

from alibabacloud_ecs20140526.client import Client
from alibabacloud_ecs20140526.models import DescribeImagesRequest
from alibabacloud_tea_openapi.exceptions import (
    ClientException,
    ServerException,
    ThrottlingException
)
from alibabacloud_tea_openapi.models import Config
from darabonba.exceptions import UnretryableException

'''云服务器示例'''
# 初始化Config
config = Config(
    access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
    access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'],
    region_id='<REGION_ID>'
)
try:
    client = Client(config)
    # 初始化Request
    request = DescribeImagesRequest(image_id='<IMAGE_ID>', region_id='<REGION_ID>')
    response = client.describe_images(request)
except UnretryableException as e:
    # 网络异常,此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
    print(e)
except  (ClientException, ServerException, ThrottlingException) as e:
    # 客户端异常,此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
    print(f"RequestId:{e.request_id},StatusCode:{e.status_code},Message:{e.message},Data:{e.data}")

解决异常

在调用API的过程中出现异常时,您可以通过以下方式获取帮助:

  • OpenAPI错误诊断中复制异常中的RequestId进行异常诊断,获取异常产生的原因及其解决方案。更多信息,请参见OpenAPI错误诊断

  • 根据异常中的错误码,请在相应产品的帮助中心文档中查找解决方案。例如,关于云服务器ECS的错误码,请参见公共错误码

  • 常见问题中查看是否有对应的解决方案。

  • 联系我们协助解决。