java - RxJava2 - 订阅的消费者抛出异常

标签 java rx-java2 rx-android

  public void testOne() throws IOException {
    throw new IOException();
  }

  public void testTwo() {
    Completable.error(new Exception("Test exception"))
        .subscribe(() -> {}, throwable -> {});
  }

  public void testThree() throws IOException {
    Completable.error(new Exception("Test exception"))
        .subscribe(
            () -> {},
            throwable -> {
              throw new IOException(throwable);
            }
        );
  }

第一种和第二种方法工作得很好。但如果我想捕获来自 Completable 的异常并重新抛出它,我就不能:

io.reactivex.exceptions.UndeliverableException: java.io.IOException: java.lang.Exception: Test exception

我不完全明白为什么我不能从 subscribe() 方法抛出异常?我该如何正确处理这种情况?

最佳答案

根据 akarnokd 的建议,我可以使用其中一种阻止方法。就我而言,我决定这样做:

  public void testThree() throws IOException {
    final Throwable throwable = Completable.error(new Exception("Test exception")).blockingGet();
    if (throwable != null) {
      throw new IOException(throwable);
    }
  } 

关于java - RxJava2 - 订阅的消费者抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48768449/

相关文章:

java - Python 的 property() 的 Java 等价物是什么?

QuickSort 方法中的 java.lang.IllegalArgumentException

android - subscribeOn() 没有离开主线程

android - 如果拍摄图像时方向发生变化,RxImagePicker 不会调用完成

android - Rx 2 Android 对于 api 调用,Single 或 Observable 哪个更好?

android - 未调用 PublishSubject doOnSubscribe

Java 登录错误,无法解析为变量

java - 使用 mockito 验证对象属性值

java - RxJava Flowable 缓存到单一死锁

android - RxJava2 : . andThen() 被调用,即使第一个 Completable 发出错误