我为Web服务编写了一个客户端。喜欢,请求 - >得到JSON
回答。
但是,如果用户未获得授权,我会收到“错误”JSON
回答和NullPointerException
。此外,逻辑是从JSON答案为ListAdapter
创建ListView
。但如果JSON
为null,那么app会崩溃
我想做这样的处理例外:
获取适配器:
public mListAdapter getData(String api){
mListAdapter result = null;
MyData[][] mData = null;
try{
Gson gson = new Gson();
Reader r = new InputStreamReader(getJSONData(api));
// getJSONData, here i can get Exception and return null, but i read what control of logic via exception is bad practice
}catch(Exception ex){
ex.printStackTrace();
Log.i("NullPointerException", "error");
return result;
}
result = new mListAdapter(title, mData);
return result;
}
的 getJSONData :
public InputStream getJSONData(String url) throws NullPointerException{
InputStream data = null;
try {
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);
data = response.getEntity().getContent();
//if (response.getEntity().getContent().getStatus()==404) return null, for example
} catch (Exception e) {
e.printStackTrace();
return null;
}
return data;
}
并设置 Adapter
ListView
:
if (adapter!=null) IWatchList.setAdapter(adapter); else IWatchList.setEmptyView(new TextView(this));
我不喜欢这种方法,因为:
- 我上来了。
- 前两种方法是通用的,因此每个适配器需要描述像第三种方法,这并不舒服。另一方面,如何定义适配器是空的或不是!只有检查它
请您的利弊,建议和提示如何更好和为什么。