Ich weiß, dass ich möchte, dass die Konsumenten unserer API keine Ausnahme behandeln müssen. Oder vielleicht möchte ich klarstellen, dass die Ausnahme immer protokolliert wird, aber nur der Verbraucher weiß, wie er mit dem Erfolg umgehen soll. Ich will, dass der Klient die Ausnahme auch behandeln kann, wenn sie wollen, gibt es kein gültiges File
, dass ich zu ihnen zurückkehren könnte.Getrennte Ausnahmebehandlung einer CompleableFuture
Anmerkung: FileDownload
ist ein 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;
}
ich wirklich die CompletionStage
Sachen nicht verstehen. Benutze ich exception
oder handle
? Bekomme ich die ursprüngliche Zukunft oder die Zukunft, die sie zurückgeben?
Was soll das Ergebnis deiner Zukunft sein, wenn eine Ausnahme ausgelöst wird? Sollte der Verbraucher die Ausnahme noch erhalten, oder möchten Sie, dass er nicht weiß, was passiert ist? – Jeffrey
@ Jeffrey Ich würde erwarten, dass sie die Ausnahme erhalten, behandeln sie auch selbst, wenn sie wollen. Ich erwarte nicht, dass sie eine Datei erhalten – xenoterracide