Реактивная обработка исключений - PullRequest
0 голосов
/ 17 мая 2018

Как можно использовать Mono.error(<Throwable>), но прикреплять информацию из тела, полученного из запроса?

  • Есть ли реактивный объект, который расширяет Throwable, который принимает объект Mono / Flux, поэтому выбрасываемая ошибка будет ждать, пока тело будет учтено?
  • Или есть способ добавить какой-нибудь «флаг» к существующему объекту Mono, чтобы он мгновенно потерпел неудачу (чтобы обойти требование Throwable)

Пример сценария ниже:

import org.springframework.web.reactive.function.client.WebClient;

private someMethod() {
    webClient.get().retrieve().onStatus(HttpStatus::isError, this::errorHandler)
}

private Mono<? extends Throwable> errorHandler(ClientResponse cr) {
    Mono<String> body = cr.body(BodyExtractors.toMono(String.class));

        ...<do something here>...

    return Mono.error(new WhateverException());
}

Спасибо

1 Ответ

0 голосов
/ 21 мая 2018
return body.flatMap(str -> Mono.error(new WhateverException(str)));
...