一、杂谈
前一阵子博客备案因为名字问题被驳回了两次也是够了,现在在公司里一直写业务代码,这让本来就不会的算法的我算法水平更加烂,最近在跟着优酷上的一个小姐姐学魔方,智商跟不太上了啊哈哈哈哈哈。OK,步入正题,名字叫Retrofit异常处理,可是内容应该主要是针对网络的统一异常处理,我之前的异常处理都是在BaseActivity或者是BaseFragment中去添加一个方法,然后在网络请求有问题时去调用这个方法,但是后来我把我用频率较多的代码(包括Base)打包发布了一个仓库AndroidQuick,这样的话我的异常处理就没法在Base层里面处理了,而且本身的处理方式就有很多不完善的地方。
二、BaseResponse(Response基类)
在BaseResponse中判断请求有无错误(判断与后台约定的code等),如果不正确,带着code调用NetworkError网络统一异常处理类
-
接口示例
@FormUrlEncoded @POST(Constants.BASE_API + "sendCode") Flowable<BaseResponse<SendCodeBean>> getMobileCode(@FieldMap Map<String, String> values); 复制代码
-
BaseResponse
public class BaseResponse<T> { private int code; private String msg; private T res; /** * 这个方法时已经成功访问后台了,code是后台约定的错误码,判断访问是否成功 * * @param context 在做异常处理的时候可能涉及到跳转Activity * @return 返回成功或失败 */ public boolean isOk(Context context) { if (code == 200) { return true; } else { NetworkError.error(context, new ServerException(code, msg)); return false; } } // get/set方法... } 复制代码
三、NetworkError(网络统一异常处理类)
-
不太会写文章,我在代码里做了详细注释。
-
代码
public class NetworkError {