WebClientreactor.core.Exceptions$ErrorCallbackNotImplemented

Tud*_*dor 7 java spring webclient

所以我有以下代码来对远程计算机执行 GET 操作:

webClient.get()
            .uri(myUri)
            .accept(MediaType.APPLICATION_JSON)
            .retrieve()
            .bodyToMono(String.class)
            .subscribe(text -> {
                LOG.info(text);
            });
Run Code Online (Sandbox Code Playgroud)

我得到这个异常,没问题,我期待着它,但很难找到任何文档如何处理这些错误:

reactor.core.Exceptions$ErrorCallbackNotImplemented: java.net.UnknownHostException
Run Code Online (Sandbox Code Playgroud)

Tud*_*dor 9

要处理这些异常,您需要添加以下内容,并根据您的情况进行调整(在我的情况下,如果我收到 unkownHostException,我只需记录一条警告,表明所请求的服务不存在:

webClient.get()
            .uri(myUri)
            .accept(MediaType.APPLICATION_JSON)
            .retrieve()
            .bodyToMono(String.class)
            .onErrorResume(e -> {
                if (e instanceof UnknownHostException) {
                    LOG.warn("Failed to get myStuff, desired service not present");
                } else {
                    LOG.error("Failed to get myStuff");
                }
                return Mono.just("Encountered an exception");
            })
            .subscribe(text -> {
                LOG.info(text);
            });
Run Code Online (Sandbox Code Playgroud)

您处理错误,并将某些内容发送到下一步。我真的希望有一种方法可以停下来,不让任何东西流入管道。

  • 您始终可以使用`Mono.empty()`(而不是`Mono.just("遇到异常")`)恢复,因此不会将任何内容传递到管道中。 (4认同)