Использует монообескуражены? - PullRequest
1 голос
/ 22 марта 2019

Я пишу веб-сервер с широким использованием реактивного программирования.Я заметил, что забыл проверить, слишком ли много раз пусто Mono.Я использую WebFlux, поэтому он преобразует пустой Mono в 200 OK ответ и очень затрудняет обнаружение этих ошибок.

Один из способов уменьшить эти ошибки - сделать отсутствие значенияявное использование Mono<Optional<T>> вместо Mono.empty().

Это похоже на дебаты Optional и null, в нем даже используется один и тот же класс.И хотя есть много людей, которые выступают за использование Optional, и это широко поддерживается библиотеками, я еще не видел никого, кто бы использовал Mono<Optional<T>>.

Есть ли недостатки использования Mono<Optional<T>>?

Как лучше надежно обрабатывать случаи отсутствия значений?

1 Ответ

1 голос
/ 22 марта 2019

Используя Mono<Optional<T>> вместо Mono<T>, вы попадаете в сложную ситуацию получения пустого Mono, но при условии, что у него всегда будет экземпляр Optional, поэтому он не действительно помогает, и только добавляет ненужные выделения.

Есть удобный оператор Mono # single , он выдаст ошибку и выдаст ошибку, если вы ожидали непустое Mono, но вместо этого получили пустой.

...