Как выполнить код до успешного результата (try except)?
Есть код, запрашивающий содержание страницы (сокеты, IdHTTP, https и т.д.), а также выполняющий другие действия. К сожалению, страница не всегда может быть доступна из за нагрузки сервера, нестабильного интернет соединения и т.д. В результате, программа работает через раз. Не по своей вине.
Как выполнить код в программе до успешного результата? Т.е. если первый раз произошла ошибка - попробовать выполнить код снова через полсекунды. И так, скажем, пять раз?
А если на пятый раз не вышло - перейти к другому блоку кода (вывести сообщение и т.д.)
Пробовал try except со счетчиком и label (переходами).
По типу если ошибка счетчик+1 и переход в начало кода.
Если счетчик=5 то стоп и вывод сообщения.
Но перескочить на начало кода в данной конструкции нельзя.
Пробовал try except со счетчиком и label (переходами).
По типу если ошибка счетчик+1 и переход в начало кода.
Если счетчик=5 то стоп и вывод сообщения.
Но перескочить на начало кода в данной конструкции нельзя.
Вам нужна рекурсия - функция в случае ошибки будет вызывать сама себя.
Можно сделать следующим образом. Каждый шаг оформить как процедуру и маркировать (шаг1, шаг2, шаг3). Над всеми этими шагами стоит цикл
<Главный цикл>
если шаг 1 успешен продожаем цикл
если нет то continue с маркером, что цикл закончился на 1-м шаге.
если шаг 2 успешен продожаем цикл
если нет то continue с маркером, что цикл закончился на 2-м шаге.
......
если шаг N успешен продожаем цикл
если нет то continue с маркером, что цикл закончился на N-м шаге.
Все действия завершены, break.
Конец цикла