Я отправил этот вопрос в группы разработчиков Android, но я хотел бы опубликовать его здесь для других людей, которые могут столкнуться с проблемой дизайна, как я:
Я искал идиому или парадигму о том, как справитьсяОшибки HTTP.
По существу,
У меня есть AsyncTask, который выполняется в фоновом потоке, который вызывает мой статический метод executeRequest ().
Это все сделанов части doInBackground ().Существует два типа исключений, которые генерируются executeRequest ().IOException для всех ошибок связи и исключение ServerErrorResponse, которое является моим собственным исключением.Это может произойти, если, например, клиент отправил что-то плохое на сервер, весь HTTP работал, но сервер пожаловался (возможно, я передал недопустимый параметр или идентификатор).
Итак, что я сделал, это обернул результатв "объекте результата" моего собственного.
В onPostExecute () я проверяю, не был ли результат ошибочным, а затем пытаюсь обработать его в потоке пользовательского интерфейса.Однако теперь я должен начать делать
Exception e = result.getException();
if (e != null) {
if (e instanceof IOException) { //network error
//handle network error here
} else if (e instanceof ServerErrorResponseException) {
//handle server error response here
}
Как вы можете видеть, это становится раздражающим. Для каждого нового исключения я должен проверять это с помощью instanceof.Есть ли способ обойти это или дизайн, которому я мог бы следовать, чтобы избежать этого?Я хочу, чтобы исключения обрабатывались в потоке пользовательского интерфейса на случай, если я покажу пользователю диалоговое окно или что-то в этом роде.
Есть идеи?