Как выполнить код до успешного результата (try except)?

Есть код, запрашивающий содержание страницы (сокеты, IdHTTP, https и т.д.), а также выполняющий другие действия. К сожалению, страница не всегда может быть доступна из за нагрузки сервера, нестабильного интернет соединения и т.д. В результате, программа работает через раз. Не по своей вине.

Как выполнить код в программе до успешного результата? Т.е. если первый раз произошла ошибка - попробовать выполнить код снова через полсекунды. И так, скажем, пять раз?
А если на пятый раз не вышло - перейти к другому блоку кода (вывести сообщение и т.д.)

Пробовал try except со счетчиком и label (переходами).
По типу если ошибка счетчик+1 и переход в начало кода.
Если счетчик=5 то стоп и вывод сообщения.
Но перескочить на начало кода в данной конструкции нельзя.
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 2
Пробовал try except со счетчиком и label (переходами).
По типу если ошибка счетчик+1 и переход в начало кода.
Если счетчик=5 то стоп и вывод сообщения.
Но перескочить на начало кода в данной конструкции нельзя.
Вам нужна рекурсия - функция в случае ошибки будет вызывать сама себя.
Ответ написан
Комментировать
@dude2012
Можно сделать следующим образом. Каждый шаг оформить как процедуру и маркировать (шаг1, шаг2, шаг3). Над всеми этими шагами стоит цикл

<Главный цикл>
если шаг 1 успешен продожаем цикл
если нет то continue с маркером, что цикл закончился на 1-м шаге.
если шаг 2 успешен продожаем цикл
если нет то continue с маркером, что цикл закончился на 2-м шаге.
......
если шаг N успешен продожаем цикл
если нет то continue с маркером, что цикл закончился на N-м шаге.
Все действия завершены, break.
Конец цикла
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 11:20
50000 руб./за проект
28 нояб. 2024, в 10:57
50000 руб./за проект
28 нояб. 2024, в 10:52
10000 руб./за проект