Обработка ошибок RXJava Android с Kotlin - PullRequest
0 голосов
/ 23 сентября 2018

Привет, я новичок в 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) }, но все еще выдает то же сообщение об ошибке.

1 Ответ

0 голосов
/ 23 сентября 2018

Вы можете передать другую лямбду на subscribe для обработки ошибок для определенного потока, например:

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

PS: doOnError и другие Побочные эффекты операторы, будутв любом случае, не влияют на поток, они просто ожидают значения, испускаемые для операций с побочными эффектами, таких как, например, регистрация.

...