CompletableFuture.get() の使用中に CompletableFuture.completeExceptionally() からスローされた例外をキャッチする方法は?
ここにいくつかのコードがあります
public CompletableFuture<Hello> sayHelloAsync() {
CompletableFuture<Hello> future = new CompletableFuture<>();
try{
sayHello(); //throws HelloException
} catch (HelloException ex) {
future.completeExceptionally(new MyException("hello exception"));
return future;
}
return future;
}
Now I want to do .get() or .join on this as follows
CompletableFuture<Hello> resultFuture = sayHelloAsync();
try{
result.get(); // throws ExecutionException but I want to catch My Exception in the simplest way possible but not by throwing another exception while catching the Execution exception and so on.
} catch(ExecutionException ex) {
throw ex.getCause();
} catch (MyException e) {
e.printStackTrace()
}
これは非常に醜いです。繰り返しますが、可能な限り数行のコードで、可能な限りクリーンな方法で MyException をキャッチしたいだけです。isCompletedExceptionally()、例外的に、join() が MyException を可能な限り簡単な方法でキャッチするのに役立つかどうかはわかりません。もしそうなら、どのように?