我正试图弄清楚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
})
答案 0 :(得分:1)
在您的情况下,您需要为onError
subscription
处理 observable1Thing().subscribe({ obs1Result ->
observable2Thing().subscribe({ obs2Result ->
}, { obs2Error ->
})
}, { obs1error ->
})
:
observables
如果您将flatMap
与subcription
等运算符合并,则只需要一个onError
,因此只处理一个observables
个案。
您将使用哪个运算符取决于您希望如何组合 obs1().flatMap { obs2() }.subscribe({
}, { error ->
})
。
示例:
{{1}}