Обработка исключений поставщика Java 8 с CompletableFuture
Рассмотрим следующий код -
public class TestCompletableFuture {
BiConsumer<Integer, Throwable> biConsumer = (x,y) -> {
System.out.println(x);
System.out.println(y);
};
public static void main(String args[]) {
TestCompletableFuture testF = new TestCompletableFuture();
testF.start();
}
public void start() {
Supplier<Integer> numberSupplier = new Supplier<Integer>() {
@Override
public Integer get() {
return SupplyNumbers.sendNumbers();
}
};
CompletableFuture<Integer> testFuture = CompletableFuture.supplyAsync(numberSupplier).whenComplete(biConsumer);
}
}
class SupplyNumbers {
public static Integer sendNumbers(){
return 25; // just for working sake its not correct.
}
}
Вышеуказанная вещь работает отлично. тем не мениеsendNumbers
также может выдать проверенное исключение в моем случае, например:
class SupplyNumbers {
public static Integer sendNumbers() throws Exception {
return 25; // just for working sake its not correct.
}
}
Теперь я хочу обработать это исключение какy
в моемbiConsumer
, Это поможет мне в обработке результата, а также исключения (если есть) внутри одной функции (biConsumer
).
Есть идеи? Могу ли я использоватьCompletableFuture.exceptionally(fn)
здесь или что-нибудь еще?