在使用Retrofit发出http请求时,有时会调用onFailure
方法(来自Callback
接口)而不是onResponse
。问题是此方法中返回的Throwable
附带null
个字段。含义,getMessage()
,getLocalizedMessage()
和getCause()
方法都返回null
。
是否有一个已知原因导致onFailure()
被称为这样的原因?
还有另一种方法可以知道调用onFailure()
方法的原因吗?
答案 0 :(得分:2)
执行调用时,改造以适配器和转换器的形式执行第三方代码。因此,很难预测它可能遇到的所有各种异常。当调用onFailure
时,有些东西引发了异常 - 改装,okhttp或适配器或转换器。除了你不需要抓住它之外,你可以像抛弃异常一样处理它。在进行调试时,使用t.printStackTrace()
来处理出错的地方以及是否可以预防。您还可以通过检查异常的类型来查找特定的异常。例如,由于网络故障,IOException
很常见 -
if (t instanceof IOException) {
// Handle IO exception, maybe check the network and try again.
}