在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);
如果重试次数用完了,我该如何传播错误?
在retryWhen
子句之后添加.doOnError(System.out::println)
无法捕获错误。它甚至被发出了吗?
在重试之前添加.doOnError(System.out :: println)
会在所有重试中显示始终失败
。