У меня ниже код повторной настройки Mono :
try {
return userRepository.findById(id) // step 1
.flatMap(user -> barRepository.findByUserId( user.getId()) // step 2
.map(bar-> Foo.builder().msg("Already exists").build()) // step 3
.switchIfEmpty(barRepository.save(Bar.builder().userId(user.getId()).build()) // step 4
.map(bar-> Foo.builder().msg("Created").build()) // step 5
))
.doOnError(throwable -> Mono.just(handleError(throwable)));
} catch(Exception e) {
log.error("from catch block");
return Mono.just(handleError(e));
}
Если ошибка возникает на шаге 1 (например, пользователь не существует по указанному идентификатору), будет ли он перехвачен doOnError или try catchблокировать или нет ни одного из этих двух?
Тот же вопрос, если ошибка возникает на шаге 2, шаге 3, шаге 4.
Какой правильный код, чтобы ошибка всегда перехватывалась doOnError и устраняла try catch?
Я использую public interface UserRepository extends ReactiveMongoRepository<User, String>
то же самое для barRepository.
handleError (throwable) просто выполняет log.error (e.getMessage () и повторяет Foo.