Один из вариантов - создать Collection
из Throwable
объектов, и когда CompletableFuture
завершится, вы можете добавить исключение в коллекцию (если оно не равно нулю). Затем в своем основном потоке вы можете опросить эту коллекцию.
Set<Throwable> exception = new CopyOnWriteArraySet<>();
CompletableFuture.runAsync(() -> {
}).whenComplete((method, e) -> exception.add(e));
Другой вариант - использовать whenComplete
с ExecutorService
. Это может не сработать, если вы не используете ExecutorService. Идея состоит в том, что whenComplete
вернется на mainThread
ExecutorService.
ExecutorService mainThread = Executors.newSingleThreadExecutor();
CompletableFuture.runAsync(() -> {
}).whenCompleteAsync((method, throwable) -> {
// throw or handle in some way on main thread
}, mainThread);