Обработка exception

Ответить
Аватара пользователя
IlyaZh
Сообщения: 32
Зарегистрирован: 14 июл 2012, 09:52
Откуда: Санкт-Петербург
Контактная информация:

Обработка exception

Сообщение IlyaZh » 17 авг 2012, 10:46

Здравствуйте. Подскажите пожалуйста, можно ли обрабатывать эксцепшены? У меня есть 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();

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Обработка exception

Сообщение rezak90 » 17 авг 2012, 10:53

я обычно не заморачиваюсь и выкидываю тосты в кетче:
Toast.makeText(this, "Exception", Toast.LENGTH_LONG).show();
R.id.team
Политика на форуме запрещена

Аватара пользователя
IlyaZh
Сообщения: 32
Зарегистрирован: 14 июл 2012, 09:52
Откуда: Санкт-Петербург
Контактная информация:

Re: Обработка exception

Сообщение IlyaZh » 17 авг 2012, 11:06

rezak90 писал(а):я обычно не заморачиваюсь и выкидываю тосты в кетче:
Toast.makeText(this, "Exception", Toast.LENGTH_LONG).show();
С тостами вылетает. Если так, как Вы предложили, ругается IDE.
Если вместо this написать имяактивити.this, то приложение разлетается в пух и прах :)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Обработка exception

Сообщение rezak90 » 17 авг 2012, 11:10

попробуй в asynctask передавать Context и заместь this вставалять context
R.id.team
Политика на форуме запрещена

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Обработка exception

Сообщение KamiSempai » 17 авг 2012, 11:29

rezak90 писал(а):попробуй в asynctask передавать Context и заместь this вставалять context
Или использовать getApplicationContext()
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
IlyaZh
Сообщения: 32
Зарегистрирован: 14 июл 2012, 09:52
Откуда: Санкт-Петербург
Контактная информация:

Re: Обработка exception

Сообщение IlyaZh » 17 авг 2012, 11:31

Добавил

Код: Выделить всё

Context context = getApplicationContext();
и подставляю эту переменную вместо this. Результат тот же. Или я что-то не так делаю? Как иначе передать контекст в асинктаск?

Аватара пользователя
IlyaZh
Сообщения: 32
Зарегистрирован: 14 июл 2012, 09:52
Откуда: Санкт-Петербург
Контактная информация:

Re: Обработка exception

Сообщение IlyaZh » 17 авг 2012, 11:51

Решил проблему. Оказывается надо было вынести все действия с UI из метода doInBackground. При эксцепшене вызываю publishProgress(-1); А затем проверяю значение в методе onProgressUpdate. Если минус единица - показываю сообщение, иначе использую это значение для прогрессбара

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Обработка exception

Сообщение Mikhail_dev » 17 авг 2012, 12:29

Старайтесь писать правильно. Нет инета? Ничего тогда не загружай вообще. Ведь это более логично. Вот тут совет писал по этому поводу. Просто делаем слушатель.
http://www.cyberforum.ru/android-dev/th ... ost3297870
Правда это не всегда спасёт. Ибо бывает что подключен к WiFi, а самого инета нету. Но такое довольно редко бывает. Так что try catch будет необходим в процентах 5 случаев.
Последний раз редактировалось Mikhail_dev 17 авг 2012, 20:54, всего редактировалось 1 раз.

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Обработка exception

Сообщение Finch » 17 авг 2012, 17:53

no-- верно сказал, логика не правильная у вас.
Код нужно писать так что6 исключений не возникало, если они есть то код не правильный! Помни это =)

п.с. меня 6ывает такое иногда когда роутер подвисает, вай фай подкл а инета нет =)
CEO of a company R.id.team

Аватара пользователя
IlyaZh
Сообщения: 32
Зарегистрирован: 14 июл 2012, 09:52
Откуда: Санкт-Петербург
Контактная информация:

Re: Обработка exception

Сообщение IlyaZh » 17 авг 2012, 19:15

Finch писал(а):no-- верно сказал, логика не правильная у вас.
Код нужно писать так что6 исключений не возникало, если они есть то код не правильный! Помни это =)

п.с. меня 6ывает такое иногда когда роутер подвисает, вай фай подкл а инета нет =)
Спасибо за хороший совет. сделал проверку на наличие подключения к сети.

Ответить