Retrofit在同步调用中处理错误

时间:2015-05-18 18:51:05

标签: android retrofit

我试图找出在Retrofit同步调用中进行错误处理的正确方法。我知道对于异步调用,Retrofit有一个针对失败案例的回调。但是我应该如何处理同步调用的错误?我的猜测是使用try块包装调用并处理catch块中的RetrofitError异常。

2 个答案:

答案 0 :(得分:6)

您的猜测似乎是正确的,使用同步调用Retrofit会抛出表示错误的RetrofitErrorReference。请注意,throw IllegalStateException中的handleError在同步调用的情况下不应发生。

编辑:看来Retrofit正在慢慢转向2.0版本,如果您计划使用Retrofit 2.0,我建议您阅读文档以了解它是如何在新版本中完成的。

编辑pt2: Retrofit已经转移到2.0版本,现在如果你想处理错误,你不再需要捕获RetrofitErrors而是IOException。 您可以直接查看execute()

的实现
/**
 * Synchronously send the request and return its response.
 *
 * @throws IOException if a problem occurred talking to the server.
 * @throws RuntimeException (and subclasses) if an unexpected error occurs creating the request
 * or decoding the response.
 */
Response<T> execute() throws IOException;

其他参考文献:1

答案 1 :(得分:4)

很难找到这个。没有人真正谈论同步调用的错误处理。但我找到了一些东西。我不完全确定是否应该添加下一行(它应该是为自定义错误添加的,但事实并非如此)我发现它here

Foo doFoo() throws RetroFitError;

同步调用应该在try catch子句中发生,如下所示:

try{
    doFoo();
}catch(RetroFitError e){

}

找到here