我在此代码中进行切换时收到ClassCastException错误:
private void performLogin(String email, String pass, String version, String platform) {
if (viewIsAttached()) {
getView().showProgress();
modelLogin.login(email, pass, version, platform, new OnStateChangeListener() {
@Override
public void onCompleted() {
if (viewIsAttached()) getView().hideProgress();
}
@Override
public void onError(ApiError error) {
if (viewIsAttached()) {
switch (error.getCode()){ //ERROR IN THIS LINE
case 418: //UPDATE
getView().openUpdateDialog();
break;
case HTTP_BAD_REQUEST:
getView().showInvalidUserError();
break;
default:
getView().showErrorGeneral();
break;
}
}
}
@Override
public void onSuccess(ResponseLogin data) {
//go to home
}
});
}
}
不幸的是,我无法重现的错误,但在Fabric中我在几个设备中收到此错误,我无法弄清楚原因。
com.omnidoctor.omniapp.screens.login.LoginPresenter$1.onError (LoginPresenter.java:103)
com.omnidoctor.omniapp.screens.login.LoginModel$1.onError (LoginModel.java:45)
rx.observers.SafeSubscriber._onError (SafeSubscriber.java:153)
rx.observers.SafeSubscriber.onError (SafeSubscriber.java:115)
rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated (OperatorObserveOn.java:273)
rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call (OperatorObserveOn.java:216)
rx.android.schedulers.LooperScheduler$ScheduledAction.run (LooperScheduler.java:107)
android.os.Handler.handleCallback (Handler.java:739)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:740)
这是我遇到的错误,发生的行是
switch(error.getCode())
更新:
ApiError类:
public class ApiError extends Throwable {
private final Throwable error;
public ApiError(Throwable e) {
super(e);
this.error = e;
}
public boolean isAuthFailure() {
return error instanceof HttpException && ((HttpException) error).code() == HTTP_UNAUTHORIZED;
}
public boolean isUserInvalid() {
return error instanceof HttpException && ((HttpException) error).code() == HTTP_BAD_REQUEST;
}
public boolean appShouldUpdate() {
return error instanceof HttpException && ((HttpException) error).code() == 418;
}
public boolean isResponseNull() {
return error instanceof HttpException && ((HttpException) error).response() == null;
}
public int getCode(){
return ((HttpException) error).code();
}
}