如何在Retrofit中处理onFailure方法中的错误?

时间:2016-12-12 18:51:56

标签: android callback retrofit

在使用Retrofit发出http请求时,有时会调用onFailure方法(来自Callback接口)而不是onResponse。问题是此方法中返回的Throwable附带null个字段。含义,getMessage()getLocalizedMessage()getCause()方法都返回null

是否有一个已知原因导致onFailure()被称为这样的原因? 还有另一种方法可以知道调用onFailure()方法的原因吗?

1 个答案:

答案 0 :(得分:2)

执行调用时,改造以适配器和转换器的形式执行第三方代码。因此,很难预测它可能遇到的所有各种异常。当调用onFailure时,有些东西引发了异常 - 改装,okhttp或适配器或转换器。除了你不需要抓住它之外,你可以像抛弃异常一样处理它。在进行调试时,使用t.printStackTrace()来处理出错的地方以及是否可以预防。您还可以通过检查异常的类型来查找特定的异常。例如,由于网络故障,IOException很常见 -

if (t instanceof IOException) {
    // Handle IO exception, maybe check the network and try again.
}