Manejo de excepciones de proveedores de Java 8 con CompletableFuture
Considere el siguiente código:
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.
}
}
Lo anterior funciona bien. sin embargosendNumbers
También podría lanzar una excepción marcada en mi caso, como:
class SupplyNumbers {
public static Integer sendNumbers() throws Exception {
return 25; // just for working sake its not correct.
}
}
Ahora quiero manejar esta excepción comoy
en mibiConsumer
. Esto me ayudará a manejar el resultado, así como la excepción (si corresponde) dentro de una sola función (biConsumer
)
¿Algunas ideas? Puedo usarCompletableFuture.exceptionally(fn)
aquí o cualquier otra cosa?