在使用Rx+Retrofit的时候,使用了自定义的Exception,但是真正返回的Throw,并不是我要强转的错误类,于是乎,就各种崩溃,用 try catch 也没有作用,就是告诉标题的错误,这个有点坑。
具体的情况:
在写支付回调的时候,我写了一个PayException,本意是想把支付中的各种错误,价格不对,签名错误,参数异常等等都暴露出来,但是问题在于,后台报错了,返回的一堆字符串,然后自然就不是正常流程的PayException的,然后直接就崩溃了,修复的代码,主要看OnError部分的异常处理
OrderApiHelper
.retrofitOrderPay(
this,
-1,
dynamicAdapter.current_personalDynamic.share_id,
AppConfig.DYNAMIC_TYPE_REDPACKAGE_PIC,
channel_type,
FreshApplication.debug ? "0.01" : dynamicAdapter.current_personalDynamic.price,
"",
"",
"",
"",
"",
new ISuccessThrowBaseData() {
@Override
public void success(Object data) {
retrofitGetData();
}
@Override
public void error(Throwable throwable) {
mProgressDialog.dismiss();
if (throwable instanceof PayException) {
PayException payException = (PayException) throwable;
ToastUtil.toast(getApplicationContext(), payException.tip);
} else {
NetUtils.checkHttpException(getApplicationContext(), throwable);
}
}
}
);