通过Retrofit在同步调用中处理错误

我试图找出正确的方法来做改进同步调用中的error handling。 我知道asynchronous调用,Retrofit有一个callback失败的情况。 但是,我应该如何处理同步调用的错误? 我的猜测是用try块封装调用,并在catch块中处理RetrofitErrorexception。

Solutions Collecting From Web of "通过Retrofit在同步调用中处理错误"

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

编辑:看来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

这很难find。 没有人真正谈到同步调用的error handling。 但我find了一些东西。 我不完全确定是否应该添加下一行(它肯定应该添加为自定义错误,但事实并非如此)我在这里find它

 Foo doFoo() throws RetroFitError; 

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

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

在这里find