RxJava2のSingle.zipのエラー処理ではまった話
問題
RxJavaでたまにonErrorReturnItem
などでエラー処理をしていてもたまにエラーがすり抜けてきてアプリが落ちてしまうことがあった
問題となっていそうな部分を簡単に表すと以下のようになっていた
Single.zip( Single Single ) .onErrorReturnItem
対処方法
RxJavaのissuesを調べてみると同じ問題があった
Rx2: Multiple errors in zip'ed observables throw exception
ここに書いてある対処方法は、
RxJavaPlugins.setErrorHandler()
でエラーハンドラーを設定する(issueのコメントではsetOnError
になっているが名前が変更になった?)- zipの中のSingleで
onErrorReturn
やonErrorResumeNext
などを呼び出す
いっけん良さそうに見えるので原因がわかりづらくてはまってしまった
実際にはどうしてそうなってしまうのかまだわかっていないのでRxJavaの実装を読んでいきたい