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 -> }) 

如果你想将subcriptionflatMap这样的操作符结合起来,你只需要一个subcription ,这样就只能处理一个onError事件。 你会使用哪一个操作符取决于你想要如何组合observables

例:

  obs1().flatMap { obs2() }.subscribe({ }, { error -> })