In Bezug auf Behandlung von Ausnahmen in dem folgenden Code:Handhabung Ausnahmen, wenn Verkettungs Futures in Guave
ListenableFuture<BufferedImage> imgFuture = downloadExecutor
.submit(new Downloader(url));
ListenableFuture<BufferedImage> resizeFuture = Futures.transformAsync(
imgFuture, new AsyncFunction<BufferedImage, BufferedImage>()
{
@Override
public ListenableFuture<BufferedImage> apply(
BufferedImage input) throws Exception
{
ListenableFuture<BufferedImage> resizedFuture = null;
if (input != null)
{
resizedFuture = actionExecutor
.submit(new ResizeImageAction(input));
}
return resizedFuture;
}
});
ListenableFuture<BufferedImage> grayFuture = Futures
.transformAsync(resizeFuture, input -> {
return actionExecutor
.submit(new ToGrayImageAction(input));
});
Unter der Annahme, dass jede Aktion zu einem Testamentsvollstrecker sumbitted eine Ausnahme auslösen kann, wie wird dieser Code verhalten.
Kann die transformAsync()
Methode keine Nullen oder Futures verknüpfen, die Ausnahmen ausgelöst haben? Will CheckedFuture
helfen mir hier helfen? Wenn ja, wie sollte ich es benutzen?
Danke !!!!
hmmm Also wenn ich mehrere 'transformAsync' verketten möchte, muss ich 'Futures.addCallback()' verwenden? – whomaniac
@whomaniac Nein, das sollten Sie nicht, dies ist nur ein Beispiel, um zu zeigen, dass die Umwandlung nicht stattfindet, wenn eine Ausnahme ausgelöst wird. Callback wird nur zum Drucken verwendet, nicht für Kettentransformationen – qwwdfsad