onErrorResume и onErrorReturn — это операторы в реактивных библиотеках (например, Project Reactor), которые обрабатывают ошибки, но работают по-разному:
Чем отличается onErrorResume от onErrorReturn?
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 — гибче и позволяет задать логику обработки ошибки.