全部產品
Search
文件中心

Alibaba Cloud SDK:異常處理

更新時間:Jul 01, 2024

本節主要介紹升級版 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());
        }
    }
}