Rxjava2:将异常映射到Single <boolean>

时间:2018-07-25 17:20:01

标签: rx-java2

我正在尝试编写一个返回Single<Boolean>的方法,其功能是检查HTTP服务器是否处于活动状态。

因此它将ping发送到服务器,并且在服务器联机的情况下可以正常工作,但是在服务器关闭的情况下,它将返回传播到subscribe的异常。 我想捕获异常并将其映射到false并从isAlive方法内部返回。

这是我的尝试:

public Single<Boolean> isAlive()
  {
    return client().get(HEALTH_CHECK_PATH) //
        .rxSend() //
        .onErrorReturnItem(null) //
        .map(response -> {
          return response.statusCode() == HttpResponse.HTTP_STATUS_NO_CONTENT;
        });
  }

我尝试返回null,并在map上检查是否为null,并相应地返回布尔值-map Single无法处理null。...知道吗? 谢谢。

EDIT-1

我尝试过:

.onErrorResumeNext(err -> Single.just(Boolean.FALSE))

它不能编译。

1 个答案:

答案 0 :(得分:0)

已解决:

public Single<Boolean> isAlive()
  {
    return client().get(HEALTH_CHECK_PATH) //
        .rxSend() //
        .map(response -> response.statusCode() == HttpResponse.HTTP_STATUS_NO_CONTENT)//
        .onErrorResumeNext(err -> Single.just(Boolean.FALSE));
  }