で先物を連鎖するとき:処理の例外は、次のコードでの例外処理についてグアバ
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));
});
キュータにsumbittedすべてのアクションは、例外を発生させることが可能と仮定すると、どのようにこのコード振る舞います。
transformAsync()
メソッドは、例外を発生させたNULLや先物を連鎖しないことを知っていますか?使用するCheckedFuture
ここで私を助けますか?もしそうなら、どうすればいいですか?
ありがとう!!!!
hmmmだから、私はいくつかの 'transformAsync'を連鎖したいと思ったら、 'Futures.addCallback()'を使う必要がありますか? – whomaniac
@whomaniacいいえ、そうすべきではありません。これは、例外がスローされた場合に変換が行われないことを示す単なる例です。コールバックはそれを印刷するためだけに使用され、チェーン変換には使用されません – qwwdfsad