Android анализирует JSON и избегает сбоя приложения, если исключение JSONException

#android #json #exception

#Android #json #исключение

Вопрос:

мое приложение отправляет POST-запрос на сервер и получает ответ в формате JSON.

Иногда мой ответ JSON равен «null» (если время ожидания запроса истекло). В этом случае мне нужно уведомить пользователя о тайм-ауте (диалоговом окне или всплывающем окне) и избежать сбоя приложения.

Как мне правильно обработать исключение JSONException и избежать сбоя приложения?

Спасибо! Марко

Комментарии:

1. Если я чего-то не хватает, вы спрашиваете, как вы перехватываете исключение и показываете диалоговое окно?

2. Есть ли причина, по которой блока try-catch будет недостаточно?

Ответ №1:

чтобы избежать сбоя вашего приложения при разборе вашего json, попробуйте следующее :

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


}
  

Ответ №2:

проверьте, является ли ваш ответ json нулевым. только после этого проанализируйте json.

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

Ответ №3:

получить полное исключение :

 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();
    }