Зависит от условия, если у вас есть кратный цикл for, и функция во внутреннем цикле выдает ошибку, хотите ли вы продолжить выполнение цикла for для других входов, или вы хотите полностью остановить выполнение цикла for .
Если вы хотите продолжить выполнение цикла, то использование try catch внутри цикла for имеет смысл, как показано ниже, так что вы все еще продолжаете цикл
Как всегда, вы можете иметь условие finally
в любой логике try-catch, которая может что-то для вас сделать!
def func4():
for i in range():
for j in range():
try:
do_something()
except:
print(error)
Но если вы хотите прекратить зацикливание в случае возникновения исключения, сохранение try-catch вне цикла имеет смысл
def func3():
try:
for i in range():
for j in range():
do_something()
except:
print(error)
В первом подходе есть предостережение, когда у вас есть цикл, работающий 100 раз, а исключение выдается 10 раз, возможно, вам нужно обрабатывать его каждый раз по-другому или подавлять, и вы не уверены, что больше исключений будет сгенерировано, как только будет запущено больше циклов. Примером, когда перехват исключений внутри цикла for полезен, может быть, если вы обрабатываете список списков, и у некоторых подсписков есть плохие элементы, и вы хотите игнорировать их и сохранить res.t
В то время как во втором подходе вы просто останавливаетесь на первом исключении и отказываетесь от зацикливания, что может быть плохо, если размер данных, с которыми вы зацикливаетесь, довольно велик, и вам нужно каждый раз перезапускать цикл, но может будьте полезны, если вы хотите исправить свой набор данных при первой обнаруженной ошибке и запустить его снова!