RxJava+Retrofit+OkHttp深入浅出-终极封装七(异常处理)
背景
在前面Rxjava+ReTrofit+okHttp深入浅出-终极封装专栏我们已经全面的封装了一套可以投入实战的框架,最近开设了微信群中有兄弟说异常处理这块可以优化优化并给出了建议参考项目,果断重新将之前的封装完善走起来,将请求过程中的处理统一封装起来,回调给调用者,根据自定义回调类型方便查询错误类型和信息。
前提
本章的内容基于掌握了前面封装的原理以后,学期起来才能完全的理解
效果:
通过统一的异常处理,可以实现各种异常的统一处理,然后通过统一回调给使用者,方便统一展示和显示提示给用户
第一条错误:故意修改了
service
里面方法地址,导致错误第二条错误:过期
token
,服务器返回的错误信息
优化之路
1.定义回调异常类
定义的回调类,方便回调接口统一处理,其中包含错误code
和错误信息displayMessage
public class ApiException extends Exception{
/*错误码*/
private int code;
/*显示的信息*/
private String displayMessage;
public ApiException(Throwable e) {
super(e);
}
public ApiException(Throwable cause,@CodeException.CodeEp int code, String showMsg) {
super(showMsg, cause);
setCode(code);
setDisplayMessage(showMsg);
}
@CodeException.CodeEp
public int getCode() {
return code;
}
public void setCode(@CodeException.CodeEp int code) {
this.code = code;
}
public String getDisplayMessage() {
return displayMessage;
}
public void setDisplayMessage(String displayMessage) {
this.displayMessage = displayMessage;
}
}
2.定义错误码
自定义错误码,相关的错误码可以自行设定规则,框架现在给出了常用的错误码定义,采用上一章讲解的Android注解方式来定义错误码的使用:
public class