我有檢查RetrofitError
它被傳遞並重新拋出它的自定義異常改造自定義錯誤處理程序+同步和ASYC請求
private static ErrorHandler getErrorHandler() {
return new ErrorHandler() {
@Override
public Throwable handleError(RetrofitError cause) {
switch (cause.getKind()) {
case NETWORK: return new NetworkException(cause);
case HTTP: return new ApiException(cause);
default: return cause;
}
}
};
}
自定義錯誤處理程序。如果這是我的終點
@GET(USERS_GET_URL)
User getUsers() throws NetworkException, ApiException;
而執行同步請求I try...catch
並按需要處理每個自定義異常。當使用
@GET(USERS_GET_URL)
void getUsers(Callback<User> cb) throws NetworkException, ApiException;
異步完成處理後的異常被再次拋出爲RetrofitError
。下面的代碼片段是從CallbackRunnable
類的Retrofit
它執行請求
try {
final ResponseWrapper wrapper = obtainResponse();
callbackExecutor.execute(new Runnable() {
@Override public void run() {
callback.success((T) wrapper.responseBody, wrapper.response);
}
});
} catch (RetrofitError e) {
Throwable cause = errorHandler.handleError(e);
final RetrofitError handled = cause == e ? e : unexpectedError(e.getUrl(), cause);
callbackExecutor.execute(new Runnable() {
@Override public void run() {
callback.failure(handled);
}
});
}
如可以看出,我的自定義異常越來越被再次拋出爲RetrofitError
這讓我鬆有價值的信息。有什麼辦法可以繞過異步請求的自定義錯誤處理嗎?