#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:
Вам потребуется операция терминала, применяемая к концу потока. Потоки оцениваются лениво.