我有一个连接服务器和登录帐户的功能:
Observabe<Response> loginAccount();
大多数时候,它可以登录成功:
loginAccount().subscribe(new Subscriber<Response>() {
@Override
public void onCompleted() {
System.out.println("success");
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(Response authenticationResponseResult) {
System.out.println(authenticationResponseResult,toString());
}
});
然而,有几次会出现SocketTimeoutException。我只想重试SocketTimeoutException和最多重试两次。
如何实现?
我知道可能我可以使用retryWhen,但我不知道如何使用它只有当异常是SocketTimeoutException和如何重试最多两次。
使用retry
的2参数过载:
loginAccount()
.retry((throwable, count) -> count < 2 && (throwable instanceof SocketTimeoutException))
.subscribe(....);