CompletableFutures и обработка исключений в Java

Я новичок во всем бизнесе 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());
}

Есть идеи, что мне не хватает?


person wonderv    schedule 08.07.2016    source источник
comment
Предположительно ваши типы InvalidRequestException и DependencyFailureException проверены. Функциональный интерфейс Supplier не декларирует создание каких-либо проверенных исключений, не говоря уже о ваших пользовательских. Вам нужно будет обрабатывать их внутри или повторно выдавать их, завернутые в непроверенный тип исключения.   -  person Sotirios Delimanolis    schedule 09.07.2016
comment
Сотириос Делиманолис, у вас есть пример того, как сделать что-то подобное?   -  person wonderv    schedule 09.07.2016
comment
Пример чего? Обработка зависит от вас, какой бы процесс вы не настроили в своем приложении. Обертывание в uncheckedException также обсуждается здесь .   -  person Sotirios Delimanolis    schedule 09.07.2016