0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RxJavaで連続してAPIを叩いた時に発生したエラーのハンドリング

Last updated at Posted at 2019-12-15

RxJavaで連続してAPIを叩いた時に発生したエラー、独自の形式にすることで処理を切り分けたいと思ったこと、ありませんか?僕はあります(そもそもAPIのエラーで判別したいけど、実装がアレだったもんで)。

NGパターン

チェインの途中でdoOnErrorを挟んでエラーをthrowしたけど、止まらずその後のflatMapに流れてしまうのでダメ。

repo.getAuth("xxx")
    .doOnError { throw AuthError("${it.message}") }
    .flatMap { repo.getPayment(it.token) }

OKパターン

onErrorResumeNextを使うと、エラーが発生した時に別のObservableを流せる。ここで独自のエラーを返せば、onErrorで処理を切り分けることが可能。

repo.getAuth("xxx")
    .onErrorResumeNext { Single.error(AuthError("${it.message}")) }
    .flatMap { repo.getPayment(it.token) }

参考

RxJava error handling in chain API calls

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?