当用户中断传输到数据Feed时,我在Android应用上获得null
强制关闭。或者有时如果互联网很慢而且似乎停滞不前,我会得到null
以下是我处理http代码的方法:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url_select);
try {
httpPost.setEntity(new UrlEncodedFormEntity(param));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
// read content
is = httpEntity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = "";
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
return null;
}
然后在onPostExecute
的{{1}}中,此处返回null,如下面的LogCat所示:
AsyncTask
我认为adapter = new ReviewAdapter(getActivity(), r, tf); // Line 1164
是杀死它的r
是什么? (null
是我传入的TrueType字体)
以下是tf
代码:
r
这些 for (String i : reviews) {
r[index] = new Review(reviews.get(index),
datelist.get(index), userlist.get(index),
itemlist.get(index), ratings.get(index),
helpfulCount.get(index), chatCounts.get(index),
catlist.get(index), titlelist.get(index));
index++;
}
通过ArrayLists
解析来填充JSON
等。
所以我的问题是:我如何处理这个问题?有没有避免空?或者我怎样才能优雅地抛出错误而不是强制关闭?
这是Logcat:
PHP
答案 0 :(得分:1)
如果第一个try
块抛出异常,您可能应该停在那里而不用打扰第二个try
块,因为is
可能不是{{1}的值如果httpEntity.getContent();
引发了异常(在连接不良的情况下会发生异常。
为什么你不能只检查httpClient.execute
是否r
并向用户说明他们的连接丢失了?