web-dev-qa-db-ja.com

エラーRXJavaの処理Android Kotlinで

こんにちは、RxJavaとKotlinを使い始めたばかりで、いくつかの概念を失っています。

私はこのような「api」を持っています:

_interface VehiclesService {
    @GET("/vehicles/")
    fun getVehicles(): Single<List<Vehicle>>
}
_

次に、次のようにレトロフィットクライアントなどを作成します。

_var retrofit = RetrofitClient().getInstance()
vehiclesAPI = retrofit!!.create(VehiclesService ::class.Java)
_

最後に私は電話をします:

_private fun fetchData() {
        compositeDisposable.add(vehiclesAPI .getVehicles()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe { vehicles -> displayData(vehicles) }
        )
    }
_

そして、ここで起動しようとするとエラーが発生します。

_The exception was not handled due to missing onError handler in the subscribe() method call
_

エラーがかなり明白であることを知っています。何が欠けているかはわかっていますが、このエラーを処理する方法はわかりません。

追加しようとしました:.doOnError { error -> Log.d("MainClass",error.message) }でも同じエラーメッセージが表示されます。

9
Shudy

別のラムダをsubscribeに渡して、次のように特定のストリームのエラーを処理できます。

    private fun fetchData() {
    compositeDisposable.add(vehiclesAPI .getVehicles()
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe( { vehicles -> displayData(vehicles) }, { throwable -> //handle error } )
    )
}

P.S:doOnErrorおよびその他の 副作用 演算子は、いずれにしてもストリームに影響を与えません。たとえば、ロギングなどの副作用操作で出力される値を予測するだけです。

10