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