首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Kotlin处理错误RXJava安卓

用Kotlin处理错误RXJava安卓
EN

Stack Overflow用户
提问于 2018-09-24 01:43:47
回答 1查看 8.6K关注 0票数 17

您好,我是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) },但仍然显示相同的错误消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-24 01:58:00

您可以将另一个lambda传递给subscribe来处理特定流的错误,如下所示:

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

附注:doOnError和其他Side Effect操作符,不会以任何方式影响流,它们只是预期为副作用操作发出的值,例如日志。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52468708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档