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

Catch Exceptions when using Completable.blockingAwait()

我最近开始使用 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
}

有没有可能使这个工作?

在链接的 Javadoc 中的几行下面有 blockingGet 运算符,returns 一个 Throwable 你可以用 instanceof 检查:

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