Страница 1 из 1
Обработка exception
Добавлено: 17 авг 2012, 10:46
IlyaZh
Здравствуйте. Подскажите пожалуйста, можно ли обрабатывать эксцепшены? У меня есть asynctask, где выполняется загрузка данных из инета внутри конструкции
Код: Выделить всё
try {
} catch (NullPointerException e) {
e.getMessage();
}
Всё работает, если инета нет - просто ничего не загружается, но приложение работает дальше. Хочу сделать какое-либо уведомление для пользователя, типа если нет инета, то пользователь получал бы сообщение об этом, но приложение продолжало бы работать.
Пробовал внутри catch разместить следующий код - получаю exception и вылет приложения.
Код: Выделить всё
AlertDialog.Builder dialog = new AlertDialog.Builder(ToiletMapActivity.this);
dialog.setTitle("MyException Occured");
dialog.setMessage(e.getMessage());
dialog.setNeutralButton("Cool", null);
dialog.create().show();
Re: Обработка exception
Добавлено: 17 авг 2012, 10:53
rezak90
я обычно не заморачиваюсь и выкидываю тосты в кетче:
Toast.makeText(this, "Exception", Toast.LENGTH_LONG).show();
Re: Обработка exception
Добавлено: 17 авг 2012, 11:06
IlyaZh
rezak90 писал(а):я обычно не заморачиваюсь и выкидываю тосты в кетче:
Toast.makeText(this, "Exception", Toast.LENGTH_LONG).show();
С тостами вылетает. Если так, как Вы предложили, ругается IDE.
Если вместо this написать имяактивити.this, то приложение разлетается в пух и прах
Re: Обработка exception
Добавлено: 17 авг 2012, 11:10
rezak90
попробуй в asynctask передавать Context и заместь this вставалять context
Re: Обработка exception
Добавлено: 17 авг 2012, 11:29
KamiSempai
rezak90 писал(а):попробуй в asynctask передавать Context и заместь this вставалять context
Или использовать getApplicationContext()
Re: Обработка exception
Добавлено: 17 авг 2012, 11:31
IlyaZh
Добавил
и подставляю эту переменную вместо this. Результат тот же. Или я что-то не так делаю? Как иначе передать контекст в асинктаск?
Re: Обработка exception
Добавлено: 17 авг 2012, 11:51
IlyaZh
Решил проблему. Оказывается надо было вынести все действия с UI из метода doInBackground. При эксцепшене вызываю publishProgress(-1); А затем проверяю значение в методе onProgressUpdate. Если минус единица - показываю сообщение, иначе использую это значение для прогрессбара
Re: Обработка exception
Добавлено: 17 авг 2012, 12:29
Mikhail_dev
Старайтесь писать правильно. Нет инета? Ничего тогда не загружай вообще. Ведь это более логично. Вот тут совет писал по этому поводу. Просто делаем слушатель.
http://www.cyberforum.ru/android-dev/th ... ost3297870
Правда это не всегда спасёт. Ибо бывает что подключен к WiFi, а самого инета нету. Но такое довольно редко бывает. Так что try catch будет необходим в процентах 5 случаев.
Re: Обработка exception
Добавлено: 17 авг 2012, 17:53
Finch
no-- верно сказал, логика не правильная у вас.
Код нужно писать так что6 исключений не возникало, если они есть то код не правильный! Помни это =)
п.с. меня 6ывает такое иногда когда роутер подвисает, вай фай подкл а инета нет =)
Re: Обработка exception
Добавлено: 17 авг 2012, 19:15
IlyaZh
Finch писал(а):no-- верно сказал, логика не правильная у вас.
Код нужно писать так что6 исключений не возникало, если они есть то код не правильный! Помни это =)
п.с. меня 6ывает такое иногда когда роутер подвисает, вай фай подкл а инета нет =)
Спасибо за хороший совет. сделал проверку на наличие подключения к сети.