异常处理

更新时间:

本节主要介绍V2.0 SDK的异常种类以及如何解决所产生的异常。

异常种类

V2.0 SDK将异常的种类进行了一定的细分,主要细分为以下几个Exception:

  • TeaUnretryableException:该异常主要是因为网络问题造成,一般是网络问题达到最大重试次数后抛出,可以通过exception.getLastRequest来查询错误发生时的请求信息。

  • TeaException: 在SDK的请求中主要以业务报错为主的异常,该异常的示例中提供了三个参数为用户排查问题提供帮助:

    • code: OpenAPI业务报错的错误码。

    • message:OpenAPI业务报错的错误信息,其中会包含本次请求的RequestId。

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

重要

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

import com.aliyun.ecs20140526.models.DescribeRegionsRequest;
import com.aliyun.tea.TeaException;
import com.aliyun.tea.TeaUnretryableException;
import com.aliyun.tea.ValidateException;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

public class Sample {
    public static void main(String[] args) throws Exception {
        Config config = new com.aliyun.teaopenapi.models.Config();
        // 从环境变量获取RAM账号的AccessKey ID
        config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
        // 从环境变量获取RAM账号的AccessKey SECRET
        config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // 地域ID
        config.setRegionId("<regionId>");
        com.aliyun.ecs20140526.Client client = new com.aliyun.ecs20140526.Client(config);

        DescribeRegionsRequest describeRegionsRequest = new DescribeRegionsRequest();
        try {
            client.describeRegions(describeRegionsRequest);
        } catch(TeaUnretryableException ue) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            ue.printStackTrace();
            // 打印错误信息
            System.out.println(ue.getMessage());
            // 打印请求记录
            System.out.println(ue.getLastRequest());
        } catch (TeaException e) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            e.printStackTrace();
            // 打印错误码
            System.out.println(e.getCode());
            // 打印错误信息,错误信息中包含 RequestId
            System.out.println(e.getMessage());
            // 打印服务端返回的具体错误内容
            System.out.println(e.getData());
        }
    }
}

解决异常

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

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

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

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

  • 联系售后协助解决。