处理请求将来呼叫的错误

时间:2016-01-14 08:53:53

标签: error-handling android-volley synchronous

我正在使用 Volley 库提供的 RequestFuture 进行同步 api调用。 如果状态 代码为4xx / 500,我需要处理错误响应。

    try {
  JSONObject response = future.get();
} catch (InterruptedException e) {
  // exception handling
} catch (ExecutionException e) {
  // exception handling
}

现在错误被 ExecutionException catch子句捕获。如何从此错误中获取 NetworkResponse

如何在catch子句中覆盖 onErrorListener

1 个答案:

答案 0 :(得分:5)

尝试使用此方法从凌空中抓取错误。还有一个注意事项,在执行未来的请求时,你应该使用get超时,这样你就不会永远等待。

try
{
   JSONObject response = future.get(30,TimeUnit.SECONDS);
}
catch(InterruptedException | ExecutionException ex)
{
   //check to see if the throwable in an instance of the volley error
   if(ex.getCause() instanceof VolleyError)
   {
       //grab the volley error from the throwable and cast it back
       VolleyError volleyError = (VolleyError)ex.getCause();
      //now just grab the network response like normal
      NetworkResponse networkResponse = volleyError.networkResponse;
   }                          
}
catch(TimeoutException te)
{
   Log.e(TAG,"Timeout occurred when waiting for response");
}