我试图找出在Retrofit同步调用中进行错误处理的正确方法。我知道对于异步调用,Retrofit有一个针对失败案例的回调。但是我应该如何处理同步调用的错误?我的猜测是使用try块包装调用并处理catch块中的RetrofitError异常。
答案 0 :(得分:6)
您的猜测似乎是正确的,使用同步调用Retrofit会抛出表示错误的RetrofitError:Reference。请注意,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)