@meim

Как продолжить выполнение программы Python при ошибке в цикле FOR?

Нужно, чтобы при любой ошибке в любой из функций - выждать 5 сек и продолжить выполнение, не переходя на следующий цикл, с тем же ftid.
Сейчас, в случае ошибки, будет пропуск отработки функций с этим ftid.
Как сделать максимально правильно.
for ftid in range(begin_ftid, end_ftid):
        try:
           f1(ftid)
           f2(ftid)
           f3(ftid)
              
        except Exception:
            time.sleep(5)
            pass
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
@o5a
for ftid in range(begin_ftid, end_ftid):
    while True:
        try:
            f1(ftid)
            f2(ftid)
            f3(ftid)

        except Exception:
            time.sleep(5)
            continue
        break
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
Оберунуть каждую функцию в try ... except, либо внутри самих функций добавить то же самое
Ответ написан
firedragon
@firedragon
Senior .NET developer
Я бы сделал так: программа работает пока очередь не пуста, в очередь складываются обьекты со следующими параметрами

I’d
Retrycount
Delay
Status

Если что пошло не так то в обработчике эксепшена ставится статус ошибки и уменьшается количество попыток. Ну и ставиться время через которое попробовать. Цикл бесконечный, но с условием выхода по окончании очереди или при 0 количестве повторов. Дополнительно можно добавить на каждую попытку сообщение об ошибке и при выходе отображать их.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы