gpt4 book ai didi

Java react 器返回不同的异常

转载 作者:行者123 更新时间:2023-12-02 10:56:15 24 4
gpt4 key购买 nike

我有这个客户端,它的调用是:

return client
.post()
.uri(SERVICE_ENDPOINT)
.contentType(MediaType.APPLICATION_JSON)
.syncBody(request)
.retrieve()
.bodyToMono(CustomResponse.class)
.map(CustomResponse::getAck)
.doOnNext(this::validateResponse)
.doOnError(throwable -> doOnError(throwable))
;

private void ValidateResponse (String ack) {
if ("ERROR".equals(ack)) {
throw Exceptions.propagate(new BadResponseException(ack));
}
}

private void doOnError(Throwable t){
if(throwable instanceof ReadTimeoutException) {
throw Exceptions.propagate(new CustomReadTimeoutException(throwable));
}
throw Exceptions.propagate(new CustomInternalException(throwable));
}

问题是,即使我有 BadResponseException,它也会转到 onError,然后错误的类型为 CustomInternalException。如何使错误类型保持为 BadResponseException?

最佳答案

一般来说,doOn*方法并不意味着改变原始序列的信号,而是更多地用于日志记录(“副作用”)等用途。

尽管从这些方法中抛出的异常被正确捕获并转换为 onError信号下游,我建议遵守更严格的标准并替换:

  • doOnNextmap ,只需重写 ValidateResponse返回原始String不 throw 时。
  • doOnErrorerrorMap(Predicate<Throwable>, Function<Throwable,Throwable>)

任何 Throwable将通过doOnError ,默认包装异常并抛出包装后的异常。通过在 errorMap 中有一个谓词,您只需包装特定的异常并避免出现问题。

关于Java react 器返回不同的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51711752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com