Retrofit+RxJava优雅的处理服务器返回异常、错误选编.doc

Retrofit+RxJava优雅的处理服务器返回异常、错误选编.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RetrofitRxJava优雅的处理服务器返回异常、错误选编

Retrofit+RxJava 优雅的处理服务器返回异常、错误 异常错误 实际开发经常有这种情况,比如登录请求,接口返回的 信息包括请求返回的状态:失败还是成功,错误码,User对象等等。如果网络等原因引起的登录失败可以归结为异常,如果是用户信息输入错误导致的登录失败算是错误。 假如服务器返回的是统一数据格式: /** * 标准数据格式 * @param T */ public class ResponseT { public int state; public String message; public T data; } 网络异常导致的登录失败,在使用Retrofit+RxJava请求时都会直接调用subscribe的onError事件; 密码错误导致的登录失败,在使用Retrofit+RxJava请求时都会调用subscribe的onNext事件; 无论是异常还是错误,都要在subscribe里面处理异常信息,如下代码: APIWrapper.getInstance().login(username, password) .subscribe(new ObserverResponseUser() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(ResponseUser data) { if(data.state == 1001){ //..... }else if(data.state == 1002){ } } }); 现在我希望在发生任何错误的情况下,都会调用onError事件,并且由model来处理错误信息。那么,此时我们就应该有一个ExceptionEngine来处理事件流中的错误信息了。 在工作流中处理异常 在正常情况下,我们获取网络数据的流程通常如下: 请求接口-解析数据-更新UI 整个数据请求过程都是发生在Rx中的工作流之中。当有异常产生的时候,我们要尽量不在ui层里面进行判断,换句话说,我们没有必要去告诉ui层具体的错误信息,只需要让他弹出一个信息(Toast或者Dialog)展示我们给它的信息就行。 请求接口和数据解析都可能出错,所以在这两层进行错误处理。为了更好的解耦,我们通过拦截器拦截错误,然后根据错误类型分发信息。 拦截器 数据解析层的拦截器 这个拦截器主要是为了获取具体的错误信息,分发给上层的UI,给用户以提示,增强用户体验。 public ObservableWeather getWeather(String cityName){ return weatherService.getWeather(cityName) //拦截服务器返回的错误 .map(new ServerResponseFuncWeather()) //HttpResultFunc()为拦截onError事件的拦截器,后面会讲到,这里先忽略 .onErrorResumeNext(new HttpResponseFuncWeather()); } //拦截固定格式的公共数据类型ResponseT,判断里面的状态码 private class ServerResponseFuncT implements Func1ResponseT, T { @Override public T call(ResponseT reponse) { //对返回码进行判断,如果不是0,则证明服务器端返回错误信息了,便根据跟服务器约定好的错误码去解析异常 if (reponse.state !=

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档