我有一个连接服务器和登录帐户的功能:
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 时使用它以及如何重试最多两次
答案 0 :(得分:1)
使用retry
:
loginAccount()
.retry((throwable, count) -> count < 2 && (throwable instanceof SocketTimeoutException))
.subscribe(....);