RX2.0嵌套订阅错误处理
我试图弄清楚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 })
在你的情况下,你需要为每个subscription
处理onError
:
observable1Thing().subscribe({ obs1Result -> observable2Thing().subscribe({ obs2Result -> }, { obs2Error -> }) }, { obs1error -> })
如果你想将subcription
和flatMap
这样的操作符结合起来,你只需要一个subcription
,这样就只能处理一个onError
事件。 你会使用哪一个操作符取决于你想要如何组合observables
。
例:
obs1().flatMap { obs2() }.subscribe({ }, { error -> })