你好,你可以處理改造錯誤。您可以自定義您的應用程序的消息。要處理Retrofit錯誤,您可以實現ErrorHandler的改進界面。例如請參閱下面的步驟。
步驟1.創建擴展Exception類的類,該類處理從ErrorHandler拋出的異常。我們將在接下來的步驟中看到課程。
public class AdvanceException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
private String message = null;
public RelaxisException() {
super();
}
public RelaxisException(String message) {
super(message);
this.message = message;
}
public RelaxisException(Throwable cause) {
super(cause);
}
@Override
public String toString() {
return message;
}
@Override
public String getMessage() {
return message;
}
}
步驟2.創建另一個擴展ErrorHandler的類。我們使用RestAdapter構建的setErrorHandler屬性來註冊這個類,這樣當改造引發異常時,這個類將處理該錯誤。
public class RetrofitErrorHandler implements ErrorHandler {
@Override
public Throwable handleError(RetrofitError retrofitError) {
if (retrofitError.getCause() instanceof ConnectException) {
return new AdvanceException(RApplication.getApplication().getResources().getString(R.string.lbl_no_internet_available));
} else if (retrofitError.getCause() instanceof java.net.SocketTimeoutException) {
return new AdvanceException(RApplication.getApplication().getResources().getString(R.string.lbl_server_not_rechable));
} else if (retrofitError.getCause() instanceof java.net.UnknownHostException) {
return new AdvanceException(RApplication.getApplication().getResources().getString(R.string.lbl_server_not_available));
} else {
return new AdvanceException(RApplication.getApplication().getResources().getString(R.string.lbl_internal_problem));
}
}
}
步驟3.下面是RestAdapter構建,我確定了錯誤處理程序的屬性。
mRestAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(HOST_SERVER)
.setErrorHandler(new RetrofitErrorHandler())
.build();
讓我知道如果你有任何問題試試這個,我希望能幫助你,謝謝。