Я понимаю, что хотел бы, чтобы пользователям нашего API не приходилось обрабатывать исключения. Или, может быть, более ясно, я хотел бы убедиться, что исключение всегда регистрируется, но только потребитель будет знать, как справиться с успехом. Я хочу, чтобы клиент также мог обрабатывать исключение, если он этого хочет. Нет действительного File
, который я мог бы вернуть им.
Примечание: FileDownload
– это Supplier<File>
.
@Override
public CompletableFuture<File> processDownload( final FileDownload fileDownload ) {
Objects.requireNonNull( fileDownload );
fileDownload.setDirectory( getTmpDirectoryPath() );
CompletableFuture<File> future = CompletableFuture.supplyAsync( fileDownload, executorService );
future... throwable -> {
if ( throwable != null ) {
logError( throwable );
}
...
return null; // client won't receive file.
} );
return future;
}
Я действительно не понимаю, что такое CompletionStage
. Мне использовать exception
или handle
? Я возвращаю исходное будущее или будущее, которое они возвращают?