Имея следующий рабочий код:
public static void main(String[] args) throws ExecutionException, InterruptedException {
CompletableFuture<Void> process1 = CompletableFuture.runAsync(() -> {
System.out.println("Process 1 with exception");
throw new RuntimeException("Exception 1");
});
CompletableFuture<Void> process2 = CompletableFuture.runAsync(() -> {
System.out.println("Process 2 without exception");
});
CompletableFuture<Void> process3 = CompletableFuture.runAsync(() -> {
System.out.println("Process 3 with exception");
throw new RuntimeException("Exception 3");
});
CompletableFuture<Void> allOfProcesses = CompletableFuture.allOf(process1, process2, process3);
allOfProcesses.get();
}
Я ищу способ собрать все исключения, которые были сгенерированы во время параллельного выполнения в CompletableFuture.allOf()
, и отобразить его в List.
Я знаю, что могу сделать это, возвращая исключение (CompletableFuture<Exception>
) вместо того, чтобы бросать и собирать его с помощью CompletableFuture::join
, но я думаю, что подход к выбрасыванию исключений лучше, чем возвращать и выбрасывать его позже