2017-09-19 1 views
0

RX 스트림에서 예외가 캐치되는 방식을 파악하려고합니다. 특히, 구독 내에서 구독이 있고 내부 구독이 관찰 가능하다는 예외를 받으면 내부 구독을 위해 onError에서 처리해야합니까? 아니면 부모 구독의 onError에서 처리 할 수 ​​있습니까? 귀하의 경우에는RX2.0 중첩 구독 오류 처리

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

답변

1

, 당신은 subscription 모든에 대한 onError을 처리해야 할 것 :

observable1Thing().subscribe({ obs1Result -> 

     observable2Thing().subscribe({ obs2Result -> 

     }, { obs2Error -> 

     }) 


    }, { obs1error -> 

    }) 

당신이 flatMap 같은 연산자로 observables을 결합하려는 경우 하나의 subcription 및 필요 했어 따라서 하나의 onError 케이스 만 처리합니다. 사용할 연산자는 observables의 결합 방법에 따라 다릅니다.

예 :

obs1().flatMap { obs2() }.subscribe({ 

    }, { error -> 

    })