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 ->
})
如果将 observables
与 flatMap
等运算符结合使用,则只需要一个 subcription
,因此只处理一个 onError
案例。
您将使用哪个运算符取决于您希望如何组合 observables
。
示例:
obs1().flatMap { obs2() }.subscribe({
}, { error ->
})
我正在尝试弄清楚 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 ->
})
如果将 observables
与 flatMap
等运算符结合使用,则只需要一个 subcription
,因此只处理一个 onError
案例。
您将使用哪个运算符取决于您希望如何组合 observables
。
示例:
obs1().flatMap { obs2() }.subscribe({
}, { error ->
})