【Kotlin/Android】RxJavaでエラーハンドリングする方法!

この記事からわかること
- Android Studio/KotlinでRxJavaの使い方
- onErrorReturn/onErrorReturnItem/onErrorResumeNext/onExceptionResumeNextの違いと使い方
- retry/retryWhen/doOnErrorの違いと使い方
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Meerkat
- Kotlin:2.0.21
RxJavaのエラーハンドリング
RxJavaでストリームにエラーが流れた場合にハンドリングするメソッドは色々用意されています。汎用性の高いものの使い方と特徴を軽くまとめていきたいと思います。
- onErrorReturn
- onErrorReturnItem
- onErrorResumeNext
- onExceptionResumeNext
- retry
- retryWhen
- doOnError
onErrorReturn
onErrorReturn
はエラーが発生したときにデフォルト値を返すメソッドです。ラムダ式の中では流れてきたエラーを参照でき、返す値を動的に指定することができます。またonErrorReturn
を使用するとエラーが発生してもストリームは正常に進んでいくので下流にdoOnError
などがあっても反応しません。
出力
onErrorReturnItem
onErrorReturnItem
はonErrorReturn
と同じくエラーが発生したときにデフォルト値を返すメソッドです。違いはonErrorReturn
がラムダ式内で動的に返す値を操作できたのに対しonErrorReturnItem
は事前に指定された固定値を返します。
出力
onErrorResumeNext
onErrorResumeNext
はエラーが発生したときに別のObservableを返すメソッドです。ラムダ式の引数で取得したエラーをThrowable
型で参照することができます。
出力
onExceptionResumeNext
onExceptionResumeNext
はExceptionが発生したときに別のObservableを返すメソッドです。発生したエラーがException
やException
を継承した独自エラーの場合のみ動作するのでRuntimeException
やThrowable
では動作しません。
出力
retry/retryWhen
retry/retryWhen
はエラーが発生したときに再試行するメソッドです。ストリームにエラーが発生した場合にストリームを最初から再試行することができます。詳細は以下の記事を参考にしてください。
doOnError
doOnError
はエラーが発生したときにコールバックを実行するするメソッドです。RxJavaでは特定のイベントが発生したときにコールバックを実行するDo系のメソッドが他にも用意されているので詳細は以下の記事を参考にしてください。
補足できなかったエラー
RxJava
ではonError
で適切にエラーハンドリングをしていてもキャッチをすり抜けて例外が発生しアプリがクラッシュしてしまうケースが存在するようです。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。