文档

异常处理

更新时间:

本节主要介绍升级版 SDK 的异常种类以及对于异常的处理。

升级版 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 ID
        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());
        }
    }
}

  • 本页导读 (1)
文档反馈