Mermilerin listesini birleştirmenin bir yolu var mı? Her biri istisna (varsa) yakalayacak ve bir Sonuç örneğinde tutabilecek olan ListenableFutures'ın bir listesi var. Son olarak, ListenableFutures Sonuçlarının herhangi birinin atılabilir olması durumunda bir istisna atmak istiyorum. Sorun, birden fazla atılabilirliği nasıl birleştirebileceğimizdir, çünkü başarısız olan birden fazla gelecek olabilir mi?İstisnaların bir listesi nasıl birleştirilir?
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());
Belirli bir anlamda, Java 7'nin “Throwable.getSuppressed()” işlevi aynı zamanda birden çok başarısızlığı temsil eder. –