Проверка и выдача исключения внутри потока не работает

#java #java-8 #try-catch #flux

#java #java-8 #попробуй-поймай #поток

Вопрос:

Я пытаюсь проверить значения a list , используя a reactor.core.publisher.Flux внутри a try catch , но когда map генерируется исключение catch , оно вообще не улавливается. Я действительно не понимаю, что здесь происходит. Некоторая помощь была бы признательна.

Это именно то, что я пытаюсь сделать:

  public Flux<Something> execute(final List<Line> lines) {
        try {
          return this.getFlux(lines)
              .map(line -> this.validateLine(line))//this throws my custom exception if the condition applies
              .map(line -> this.doSomething(line))
              .map(line -> this.doSomethingElse(line));

        } catch (myCustomException e) {
            return something;
        }
  }
 

Я вижу validate , что метод работает хорошо и выдает исключение путем отладки, но catch , похоже, он не работает, и я не вижу, что не так.

Комментарии:

1. Действительно ли это связано с потоками Java, а не с реактивным конвейером Flux ?

2. На самом деле да, это связано с Flux тем, что я никогда не видел их раньше, я пытаюсь понять, как они работают

Ответ №1:

Вам потребуется операция терминала, применяемая к концу потока. Потоки оцениваются лениво.