用Kotlin的方式来处理网络异常

一. 前言

之前的文章

RxJava处理业务异常的几种方式

曾经介绍过 Retrofit 的异常可以有多种处理方式。

其中,可以使用 RxJava 的错误处理操作符,它们是专门用来处理异常的。

随便例举两个操作符:

onErrorReturn 操作符,表示当发生错误的时候,发射一个默认值然后结束数据流。所以 Subscriber 看不到异常信息,看到的是正常的数据流结束状态。

onErrorResumeNext 操作符,表示当错误发生的时候,使用另外一个数据流继续发射数据。在返回的被观察者中是看不到错误信息的。

二. 使用 Kotlin 的特性

这次我结合 Kotlin 扩展函数的特性来尝试处理异常。

网络请求返回的 Response 大多是采用如下这种形式:

对于客户端开发而言,我们会封装一个基类的HttpResponse。

其中,UnProguard是一个空的接口,主要是方便 App 在混淆的时候保留部分类。

通常情况下,我们会在 Observer 的 onError 中按照如下的方式处理异常:

如果我们利用 RxJava 的错误处理操作符,可以编写如下的扩展函数:

扩展函数 errorReturn 的使用:

这样无须在 onError 中处理异常,而且 errorReturn 还是一个高阶函数。它的 action 参数传递的是一个函数,专门用于处理异常。每一个网络请求的异常处理并不会都一样,可以用该函数来传递不同的异常处理。

总结

合理利用 Kotlin 的扩展函数,可以编写优雅的代码。而使用高阶函数,则可以达到的进一步的抽象。

关注【Java与Android技术栈】

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180724G1VSRV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券