使用Completable.blockingAwait()时捕获异常

时间:2017-06-19 16:56:06

标签: java reactive-programming rx-android rx-java2

我最近开始使用RxJava 2,并且想知道在调用Completable.blockingAwait()时是否有可能捕获更具体的异常。

这就是我在做的事情:

try {

  Completable.create(new CompletableOnSubscribe() {
    @Override
    public void subscribe(@NonNull CompletableEmitter e) throws Exception {
        e.onError(new IOException());
    }
  }).blockingAwait();

} catch (RuntimeException e) {
  Throwable cause = e.getCause();

  if(cause instanceof IOException) {
      // Handle IOException
  }
}

这就是我想做的事情:

try {

  Completable.create(new CompletableOnSubscribe() {
    @Override
    public void subscribe(@NonNull CompletableEmitter e) throws Exception {
        e.onError(new IOException());
    }
  }).blockingAwait();

} catch (IOException e) {
  // Handle IOException
}

有没有可能让这项工作?

1 个答案:

答案 0 :(得分:0)

在链接的Javadoc中有几行,blockingGet运算符返回Throwable,您可以instanceof进行检查:

 Throwable err = Completable.error(new IOException()).blockingGet();
 if (err instanceof IOException) {
     // ...
 }