gpt4 book ai didi

rx-java - 如果 retryWhen :s retries runs out 则捕获错误

转载 作者:行者123 更新时间:2023-12-03 14:50:10 25 4
gpt4 key购买 nike

documentation for RetryWhen那里的例子是这样的:

Observable.create((Subscriber<? super String> s) -> {
System.out.println("subscribing");
s.onError(new RuntimeException("always fails"));
}).retryWhen(attempts -> {
return attempts.zipWith(Observable.range(1, 3), (n, i) -> i).flatMap(i -> {
System.out.println("delay retry by " + i + " second(s)");
return Observable.timer(i, TimeUnit.SECONDS);
});
}).toBlocking().forEach(System.out::println);

但是,如果重试用完,我该如何传播错误?

添加 .doOnError(System.out::println)retryWhen子句没有捕捉到错误。它甚至发出了吗?

添加 .doOnError(System.out::println)重试前何时显示 always fails对于所有重试。

最佳答案

retryWhen 的文档说它将 onError 通知传递给其订阅者并终止。所以你可以做这样的事情:

    final int ATTEMPTS = 3;

Observable.create((Subscriber<? super String> s) -> {
System.out.println("subscribing");
s.onError(new RuntimeException("always fails"));
}).retryWhen(attempts -> attempts
.zipWith(Observable.range(1, ATTEMPTS), (n, i) ->
i < ATTEMPTS ?
Observable.timer(i, SECONDS) :
Observable.error(n))
.flatMap(x -> x))
.toBlocking()
.forEach(System.out::println);

关于rx-java - 如果 retryWhen :s retries runs out 则捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37860856/

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