こんにちは、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) }
でも同じエラーメッセージが表示されます。
別のラムダをsubscribe
に渡して、次のように特定のストリームのエラーを処理できます。
private fun fetchData() {
compositeDisposable.add(vehiclesAPI .getVehicles()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe( { vehicles -> displayData(vehicles) }, { throwable -> //handle error } )
)
}
P.S:doOnError
およびその他の 副作用 演算子は、いずれにしてもストリームに影響を与えません。たとえば、ロギングなどの副作用操作で出力される値を予測するだけです。