阿里云首页 阿里云SDK

异常处理

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

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

  • ValidateException: 该异常会在用户没有填写 OpenAPI 必填参数或是填写的参数类型不匹配的情况下抛出,可通过查看异常的 message 来定位错误信息。

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

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

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

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

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

public static void main(String[] args) throws Exception {
    Config config = new com.aliyun.teaopenapi.models.Config();
    config.setAccessKeyId("<accessKeyId>");
    config.setAccessKeySecret("<accessSecret>");
    config.setRegionId("<regionId>");
    ecs20140526.Client client = new ecs20140526.Client(config);
    
    DescribeRegionsRequest describeRegionsRequest = new DescribeRegionsRequest();
    try {
      client.describeRegions(describeRegionsRequest);
    } catch(ValidateException ve) {
        // 打印整体的错误输出
        ve.printStackTrace();
        // 打印错误信息
        System.out.println(ve.getMessage());
    } 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());
    }
}