обрабатывать исключения - PullRequest
       1

обрабатывать исключения

1 голос
/ 25 октября 2011

Я пишу клиент для веб-сервиса.Мол, сделал запрос -> получил 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));

Мне не нравитсяэтот метод, потому что:
- я его придумал.
- первые два метода универсальны, поэтому каждый адаптер нужно описать как третий метод, это неудобно.С другой стороны как иначе определить адаптер пустой или нет!Только если проверить.

Пожалуйста, ваши плюсы и минусы, предложения и советы, как лучше и почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...