检测 java API 调用是否成功完成的最佳方法是什么

What is the best way to detect whether a java API call successfully completed or not

我使用以下代码将目标池添加到 java 中的 Google 计算引擎,使用 Google Compute Engine Java API

Operation operation = compute.targetPools().insert(PROJECT_ID, REGION_NAME, targetPool).execute();

在执行下一行之前,我需要确保目标池是否已成功添加。在 Google Compute Engine API 中执行此操作的最佳方法是什么?

您尝试过使用 try/catch 块吗? 你可以这样做:

try
{
   Operation operation = compute.targetPools().insert(PROJECT_ID, REGION_NAME, targetPool).execute();
}
catch(Exception ex)
{
   //Error handling stuff
}

希望对您有所帮助:)

一种可能是检查状态

while(!operation.getStatus().equals("DONE")) { 
  //wait
  System.out.println("Progress: " + operation.getProgress());
}
  // Check if Success
if(operation.getError() != null) {
  // Handle Error
} else {
  // Succeed with Program
}

您需要等到操作状态为DONE,然后检查它是否没有错误。为此,您需要使用 compute."operations"().get() 对操作进行轮询 - 我将操作放在引号中,因为存在三种类型的操作:全局、区域和区域,每个操作其中有自己的服务:globalOperations()、regionOperations() 和 zoneOperations()。由于 targetPools 是区域资源,insert 创建的操作也是区域性的,因此您需要使用 compute().regionOperations().get()。代码:

while (!operation.getStatus().equals("DONE")) {
   RegionOperations.Get getOperation = compute.regionOperations().get(
              PROJECT_ID, REGION_NAME, operation.getName());
   operation = getOperation.execute();
}
if (operation.getError() == null) {
  // targetPools has been successfully created
}