Как правильно отлавливать Exceptions

Ответить
Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Как правильно отлавливать Exceptions

Сообщение Elek » 07 дек 2013, 08:59

Добрый день, есть приложение, которое подключается к http, получает оттуда JSON и парсит его в базу данных.
Все это происходит в AsyncTask'e.
Когда есть интернет и получаем правильный ответ, тогда все нормально работает :).
Теперь нужно понять, как правильно поступать, когда нет интернета или получаю не правильный JSON или вообще его не получаю.
На данный момент - отлавливаю эксепшн в "catch" блоке пишу stack Trace и возвращаю null.
Как правильно оповестить активити, о том, что случилась ошибка ? Пока из того, что надумал - сделать броадкаст и отправлять его активити.

Как вообще правильно поступать в таких ситуациях?

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

Re: Как правильно отлавливать Exceptions

Сообщение rezak90 » 07 дек 2013, 12:46

нужно возвращать Exception в активити
R.id.team
Политика на форуме запрещена

Аватара пользователя
Elek
Сообщения: 55
Зарегистрирован: 29 май 2012, 09:57

Re: Как правильно отлавливать Exceptions

Сообщение Elek » 08 дек 2013, 13:32

В общем работает не так, как я описал.
Есть класс Loader, который занимается загрузкой данных и сохранением в ContentProvider.
Активити делает запрос из ContentProvider'a и заодно просит Loader обновить ContentProvider. В дополнение к этому в самом активити есть ContentObserver, который подгружает данные из Content Provider'a, в Активити если есть какие-то изменения.
В классе Loader'e есть внутренний приватный класс, который расширяет AsyncTask и который занимается загрузкой данных.
AsyncTask не общается напрямую с активити, да и нельзя возвращать Exception в doInBackground().
Получилось немного путанно, да и возможно, что мой дизайн не самый правильный.
Что можно сделать в этом случае ?

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

Re: Как правильно отлавливать Exceptions

Сообщение rezak90 » 08 дек 2013, 14:33

Elek писал(а):AsyncTask не общается напрямую с активити, да и нельзя возвращать Exception в doInBackground()
можно, но это не правильно, но AsyncTask это класс и никто не мешает объявить переменную класса Exception и потом в onPostExecute её проверить
R.id.team
Политика на форуме запрещена

Ответить