Итак, у меня есть инструкция try-catch в java-программе, которая извлекает данные из Интернета. Как обрабатывать таймауты? Могу ли я просто обернуть захват try catch while и после некоторого количества неудачных итераций попросить пользователя попробовать позже?
Как мне обрабатывать таймауты? Могу ли я просто обернуть захват try catch while и после некоторого количества неудачных итераций попросить пользователя попробовать позже?
Я не думаю, что это была бы хорошая идея. ИМО, самое лучшее, что нужно сделать, это выбрать тайм-аут, который соответствует времени, которое, по вашему мнению, должно ждать пользователя, а не использовать цикл. Как отмечает @BalusC, любой достойный API-интерфейс Http даст вам возможность установить таймаут, прежде чем вы сделаете запрос. Используйте его.
Проблема с использованием цикла заключается в том, что вы потенциально добавляете нагрузку на уже перегруженный сервер. Предположим, что реальной причиной таймаута является то, что сервер пытается обрабатывать слишком много запросов параллельно, и каждый запрос занимает много времени. Если вы (клиент) тайм-аут запроса, а затем сразу же повторите его, вы, вероятно, просто добавляете дополнительную нагрузку... усугубляя ситуацию.
Скорее всего, некоторые пользователи будут нажимать кнопку повтора. Вам не нужно делать молот для них.
URLConnection
имеетsetConnectionTimeout()
. Используйте это.