java future 异常处理_java – 从CompletableFuture抛出异常

  • Post author:
  • Post category:java


您的代码建议您稍后在同一方法中使用异步操作的结果,因此您无论如何都必须处理CompletionException,因此处理它的一种方法是

public void myFunc() throws ServerException {

// Some code

CompletableFuture a = CompletableFuture.supplyAsync(() -> {

try { return someObj.someFunc(); }

catch(ServerException ex) { throw new CompletionException(ex); }

});

// Some code running in parallel to someFunc()

A resultOfA;

try {

resultOfA = a.join();

}

catch(CompletionException ex) {

try {

throw ex.getCause();

}

catch(Error|RuntimeException|ServerException possible) {

throw possible;

}

catch(Throwable impossible) {

throw new AssertionError(impossible);

}

}

// some code using resultOfA

}

除了我们已经包含在CompletionException中的ServerException之外,在调用j



版权声明:本文为weixin_34336527原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。