全部產品
Search
文件中心

Alibaba Cloud SDK:異常處理

更新時間:Jul 12, 2024

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