У меня есть эта функция здесь:
Function<Integer, Integer> func = (value) -> value + 5;
func = func.andThen((value) -> {
//Imagine that here some code executed and raised an exception, I'm throwing it
//manually just for the sake of this example.
throw new RuntimeException("failed");
});
func = func.andThen((value) -> {
System.out.println("Reached last function !");
return value;
});
executeFunction(func);
Теперь вы можете видеть, что я вызываю исключение Runtime в первом методе andThen.Это потому, что я хочу помешать второй и затем выполнить.Это лучший способ сделать это?
Кроме того, я замечаю, что если я выполняю эту функцию внутри другого потока (асинхронно), исключение не выводится в моей консоли, и я хочу знать, что исключение произошло.
private static void executeFunction(Function<Integer, Integer> function) {
CompletableFuture.supplyAsync(() -> function.apply(100));
}
В этом случае, если я хочу убедиться, что исключение регистрируется, но что следующая функция в цепочке andThen не выполняется, я должен войти и бросить?Разве это не паттерн ати?