@Corn385

Как работать с конструкцией try except?

Здравствуйте, меня интересует некоторый момент:
Имеется цикл, который проходит по некоему списку list
list = [1,2,3,6,22]
for choice in list:
	try:
		pass
	except:
		pass

Если у нас все нормально, то код в блоке try выполняется, и переходит к следующему элементу списка.
Но если возникает какая то ошибка, то код переходит в блок except, и грубо говоря этот элемент из списка пропускается.
Мне нужно сделать так, чтобы если у какого либо элемента из списка возникала ошибка при выполнении кода, этот элемент заново начинал исполняться. Как мне это реализовать?
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Сделайте ещё один вложенный цикл для попыток обработки каждого из элементов. Можно при успешном выполнении без ошибок выходить из внутреннего цикла досрочно, а при ошибке не выходить досрочно и цикл будет повторять попытки.
Если бы у вас было побольше опыта программирования на питоне, я бы посоветовал бы вам вынести обработку одного элемента в отдельную функцию, а еще посоветовал бы поупражняться в написании декоратора `retry`, который будет оборачивать любую функцию в новую функцию и в случае ошибки повторять её запуск пока не будет исчерпан лимит попыток.
По-моему такой пример или упражнение, кстати, и было в одной из книг Лутца. Но вам подойдёт практически любая, где рассматриваются основы языка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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