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