Я пишу клиент для веб-сервиса.Мол, сделал запрос -> получил JSON
ответ.Но если пользователь не авторизован, я получил "плохой" JSON
ответ и NullPointerException
.Далее, логика заключается в создании ListAdapter
для ListView
из ответа JSON.Но если JSON
null, приложение будет аварийно завершено.
Я хочу сделать вот так для дескриптора исключения:
Получить адаптер :
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));
Мне не нравитсяэтот метод, потому что:
- я его придумал.
- первые два метода универсальны, поэтому каждый адаптер нужно описать как третий метод, это неудобно.С другой стороны как иначе определить адаптер пустой или нет!Только если проверить.
Пожалуйста, ваши плюсы и минусы, предложения и советы, как лучше и почему.