Я новичок во всем бизнесе CompletableFutures. В настоящее время я пытаюсь заполнить список фьючерсов объектами, полученными из вызова службы, а затем вернуть сам список. Однако я получаю ошибки error: unreported exception InvalidRequestException; must be caught or declared to be thrown
и unreported exception DependencyFailureException; must be caught or declared to be thrown
, хотя использую блок try/catch и объявляю исключения. Вот что у меня есть до сих пор:
public List<Dog> getDogs(List<String> tagIds, String ownerId)
throws InvalidRequestException, DependencyFailureException {
List<CompletableFuture<Dog>> futures = new ArrayList<>(tagIds.size());
List<Dog> responses = new ArrayList<>(tagIds.size());
for(String tagId : tagIds) {
futures.add(CompletableFuture.supplyAsync(() -> {
try {
return getDog(tagId, ownerId);
} catch (InvalidRequestException ire) {
throw new InvalidRequestException("An invalid request to getDog", ire);
} catch (DependencyFailureException dfe) {
throw new DependencyFailureException("A dependency failure occurred during a getDog call", dfe);
}
}));
}
return futures.stream()
.map(CompletableFuture::join)
.collect(Collectors.toList());
}
Есть идеи, что мне не хватает?
InvalidRequestException
иDependencyFailureException
проверены. Функциональный интерфейсSupplier
не декларирует создание каких-либо проверенных исключений, не говоря уже о ваших пользовательских. Вам нужно будет обрабатывать их внутри или повторно выдавать их, завернутые в непроверенный тип исключения. - person Sotirios Delimanolis   schedule 09.07.2016