RX2.0嵌套订阅错误处理

RX2.0 nested subscription error handling

我正在尝试弄清楚 RX 流是如何捕获异常的。特别是,如果我在一个订阅中有一个订阅,并且内部订阅从它的可观察到的异常中接收到异常,我是否需要在内部订阅的 onError 中处理它,或者我可以在父订阅的 onError 中处理它?

observableThing1.subscribe({ _ ->
    observableThing2.subscribe({ _ ->
        // Something horrible happens here an an exception is throw by observableThing2
    })
}, { error -> 
    // Expecting I can handle all errors at the top most subscription
})

在您的情况下,您需要为每个 subscription 处理 onError

    observable1Thing().subscribe({ obs1Result -> 

        observable2Thing().subscribe({ obs2Result -> 

        }, { obs2Error -> 

        })


    }, { obs1error -> 

    })

如果将 observablesflatMap 等运算符结合使用,则只需要一个 subcription,因此只处理一个 onError 案例。 您将使用哪个运算符取决于您希望如何组合 observables

示例:

    obs1().flatMap { obs2() }.subscribe({

    }, { error ->

    })