4
throwableのリストを組み合わせる方法はありますか?私はListenableFuturesのリストを持っています。ListenableFuturesのリストは、例外があればすべて取得し、Resultインスタンスに保持します。最後に、ListenableFuturesのResultのどれかにThrowableが含まれている場合、例外をスローしたいと思います。問題は失敗する複数の先物が存在する可能性があるため、複数のスローブラブルを結合する方法です。例外のリストを結合するにはどうすればよいですか?
List<ListenableFuture<Result>> futureList = new ArrayList<>();
futureList.add(future1);
futureList.add(future2);
futureList.add(future3);
ListenableFuture<List<Result>> future = futureFutures.successfulAsList(futureList);
return Futures.transform(future, new Function<List<Result>, FinalResult>() {
@Override
public FinalResult apply(List<Result> resultList) {
List<Throwable> throwableList = new ArrayList<>();
for (Result result : resultList) {
if (result.getThrowable() != null) {
throwableList.add(result.getThowable());
}
}
if (!throwableList.isEmpty()) {
// Is there something like below that I can combine a list
// of throwables and throw it?
Throwable.propagateList(throwableList); // ?????????
}
.....
return finalResult;
}
},
MoreExecutors.sameThreadExecutor());
ある意味では、Java 7の 'Throwable.getSuppressed()'は複数の失敗を表します –