Чем отличается onErrorResume от onErrorReturn?

onErrorResume и onErrorReturn — это операторы в реактивных библиотеках (например, Project Reactor), которые обрабатывают ошибки, но работают по-разному:

Короткий ответ

Что ответить на собеседовании

onErrorResume и onErrorReturn — это операторы в реактивных библиотеках (например, Project Reactor), которые обрабатывают ошибки, но работают по-разному:

Подробный разбор

Ответ с пояснениями

onErrorResume и onErrorReturn — это операторы в реактивных библиотеках (например, Project Reactor), которые обрабатывают ошибки, но работают по-разному:

  • onErrorReturn при возникновении ошибки возвращает заранее заданное значение и завершает поток. Это простой способ заменить ошибку конкретным значением.
  • onErrorResume при ошибке переключается на другой Publisher (поток), который может быть динамически сгенерирован на основе самой ошибки. Позволяет более гибко обработать ошибку, например, выполнить альтернативную логику или запрос.

Пример:

Mono<String> source = Mono.error(new RuntimeException("Ошибка"));

// onErrorReturn возвращает фиксированное значение
source.onErrorReturn("Значение по умолчанию")
      .subscribe(System.out::println); // Выведет: Значение по умолчанию

// onErrorResume переключается на другой Mono
source.onErrorResume(e -> Mono.just("Альтернативное значение"))
      .subscribe(System.out::println); // Выведет: Альтернативное значение

Таким образом, onErrorReturn проще и статичнее, onErrorResume — гибче и позволяет задать логику обработки ошибки.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее