我试图弄清楚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
})
最佳答案
在您的情况下,您需要为每个onError
处理subscription
:
observable1Thing().subscribe({ obs1Result ->
observable2Thing().subscribe({ obs2Result ->
}, { obs2Error ->
})
}, { obs1error ->
})
如果将
observables
与像flatMap
这样的运算符组合在一起,则只需要一个subcription
,从而仅处理一个onError
情况。您将使用哪种运算符取决于您如何组合
observables
。例:
obs1().flatMap { obs2() }.subscribe({
}, { error ->
})
关于error-handling - RX2.0嵌套订阅错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303087/