2012-03-01 45 views
0

我有一个请求POST/GET在Android中的问题。 我试图处理错误:Android - 如何处理程序超时

产生的原因:java.net.SocketTimeoutException: Read timed out

为了防止对我的应用程序崩溃,我加了40秒的超时值。这有效,但有时40秒不足以避免错误。

我尝试添加了“尝试捕获”,但似乎错误没有发生这里面:

try { 
      request.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      localContext.setAttribute(ClientContext.COOKIE_STORE, 
        Backend2.cookieStore); 
      response = HttpManager.execute(request, localContext); 
      if (response.getEntity() != null) { 
       final String r = EntityUtils.toString(response.getEntity()); 
       return r; 
      } else { 
       return null; 
      } 
     } catch (SocketTimeoutException e) { 
      e.printStackTrace(); 
      return null; 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
      return null; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return null; 
     } 

我要寻找一个解决方案,但是当我在计算器和谷歌阅读,我只看到像“增加你的超时,增加一个尝试等职位”

我做错了什么?

回答

0

很难说只看你的catch语句,但也许你得到一个比SocketTimeoutException不同的错误?尝试捕捉异常,而不是确认。

+0

我更新了完整的尝试和捕获的职位,我应该只添加异常? – christian246 2012-03-02 11:10:35

+0

正如你之前所说的,有时候你会遇到一个SocketTimeoutException,有时你不会,所以我认为你可能会得到一个不同的错误。尝试捕获异常,除非您对每种类型的异常都有不同的处理方法。 – 2012-03-02 11:42:17