RX2.0嵌套订阅错误处理

时间:2017-09-19 14:28:38

标签: error-handling kotlin rx-java2

我正试图弄清楚RX流如何捕获异常。特别是,如果我在订阅中有订阅并且内部订阅从它的observable接收到异常,我是否需要在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
})

1 个答案:

答案 0 :(得分:1)

在您的情况下,您需要为onError subscription处理 observable1Thing().subscribe({ obs1Result -> observable2Thing().subscribe({ obs2Result -> }, { obs2Error -> }) }, { obs1error -> })

observables

如果您将flatMapsubcription等运算符合并,则只需要一个onError,因此只处理一个observables个案。 您将使用哪个运算符取决于您希望如何组合 obs1().flatMap { obs2() }.subscribe({ }, { error -> })

示例:

{{1}}