2011-10-05 59 views
0

我的应用程序向服务器发送POST请求并使用JSON格式获取响应。Android解析JSON并避免应用程序崩溃如果JSONException

有时我的JSON响应是“空”(如果请求超时)。 在这种情况下,我需要通知用户有关超时(对话或吐司),并避免应用程序崩溃。

如何正确处理JSONException并避免应用程序崩溃?

谢谢! Marco

+0

除非我失去了一些东西你问如何你有没有发现异常并显示一个对话框? –

+0

是否有一个尝试catch块不足以满足的原因? – JackWink

回答

3

避免你的应用程序的crach在解析您的JSON,试试这个:

if (jsonResponse == null) { 
     // notify user 
} else { 
     try { 
     // parse json here. 
     } catch (JSONException e) { 
     Toast.makeText(this,"Error on the response", 3000).show(); 
     } 


} 
+0

是否有窍门,谢谢大家! –

+0

欢迎您:) – Houcine

1

检查您的json响应是否为空。只有然后解析json。

if (jsonResponse == null) { 
     // notify user 
} else { 
     // parse json here. 
} 
+0

谢谢,对不起,我只能标记一个正确的答案。 –

0

得到充分的例外:

StatusLine statusLine = response.getStatusLine(); 
    if (statusLine.getStatusCode() == HttpStatus.SC_OK) { 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     response.getEntity().writeTo(out); 
     out.close(); 
     jsonString = out.toString(); 
    } 

    }catch(ConnectException e){    
    // handle your exception here, maybe something like 
     Toast.makeText(context,"Error!",5000).show(); 
     finish(); 

    } catch (URISyntaxException e1) { 
     e1.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }