当前位置: 首页 > 知识库问答 >
问题:

使用Kotlin处理错误RXJava Android

陈实
2023-03-14

嗨,我是RxJava和Kotlin的新手,我对它有一些概念。

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个答案

林俊英
2023-03-14

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

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

p.s:doonerror和其他副作用运算符不会影响流,它们只是预期为副作用操作(例如日志记录)发出的值。

 类似资料:
  • 通过对错误类型实现 Display 和 From,我们能够利用上绝大部分标准库错误处理工具。然而,我们遗漏了一个功能:轻松 Box 我们错误类型的能力。 标准库会自动通过 Form 将任意实现了 Error trait 的类型转换成 trait 对象 Box<Error> 的类型(原文:The std library automatically converts any type that imp

  • 在添加com.google.dagger:dagger-android-support依赖项后,我得到了这个gradle错误。 这是我的构建的一部分

  • 我在尝试处理调用Spring WebFlux的web客户机的不同错误时遇到了麻烦。 我如何修改我的代码,使它返回我生成的自定义消息?

  • 我可以看到promise没有实现,因为返回的数组包含适当的拒绝promise。 有人能告诉我为什么不调用吗?(如果我在中有一个promise数组,其中一个被拒绝,我就知道是这样)

  • 问题内容: 我一直在努力解决这个问题,但没有找到一个强有力的答案。我正在尝试使用useMutation挂钩执行登录突变。 TLDR; 我想知道在onError中传递的选项和useMutation给我的错误之间到底有什么区别 这是我的代码段 在服务器端,我有一个用于登录的预设/硬编码电子邮件,并且我没有使用Apollo或任何其他客户端。在此登录突变的解析器中,如果使用的电子邮件不相同,我只会抛出一个