Я пытался. Исключительно и .handle, но они, похоже, не работают. В scala вы можете вызывать метод в будущем с закрытием, которое подобно блоку finally (оно выполняется при исключении AND при успешном завершении). И он пропагандирует исключение или успех в цепочке as-is.Как вызвать CompletableFuture callback при распространении результата или ошибки?
Я попытался это ...
CompletableFuture<Object> future = newFuture.handle((r, e) -> {
if(r != null)
return r;
else if(e != null)
return e;
else
return new RuntimeException("Asdf");
});
Assert.assertTrue(future.isCompletedExceptionally());
но тест не в будущем полностью успешно с результатом исключения (как странно).
Чтобы правильно распространять исключения в 'handle()', вам нужно «бросить» их. В противном случае, ответ, в котором указывается, что вы должны использовать 'whenComplete', если вам просто нужны побочные эффекты без преобразования результата, это лучший подход. – acelent