Как вы уже знаете, мы говорим об обработке ошибок при использовании try...except
.
Когда ошибка генерируется операцией (или другими операторами), Python останавливает выполнение блока try и передается в первый , за исключением блока , который соответствует возбужденному исключению.
В случае, если нет предложения исключений, которое соответствует нашему исключению, оно передается во внешнем операторе try До тех пор, пока он не будет обработан или не будет найден обработчик, возбуждаемое исключение становится необработанным исключением и выполнение останавливается с сообщением об отслеживании ошибки.
В дополнение к блоку исключений мы можем использовать блок finally , который будет выполняться независимо от того, происходит ли исключение, и блок else. Последний полезен для кода, который должен быть выполнен, если предложение try не вызывает исключение.
Ваши примеры
Как вы сказали, эти две части кода дают одинаковый результат. Однако, прочитав на документации страницу Python, мы получили следующее подтверждение:
" Использование предложения else лучше, чем добавление дополнительного кода к предложению try, поскольку это позволяет избежать случайного перехвата исключения, которое не было вызвано кодом, защищенным попробуйте ... кроме заявления."
Проще говоря, если у вас есть разные операторы, которые вызывают одну и ту же ошибку, но для одного из них вы не заинтересованы в его отлове, переместите его в условие else. Посмотрите на этот вопрос в стеке , чтобы лучше понять.
Так что в вашем случае вы можете разрешить оператор print
в блоке try, потому что вы не поймаете некоторые особые исключения из него, и нет большой разницы в этом случае, когда вы помещаете оператор print. Тем не менее, я думаю, что второй пример - это хорошее логическое разделение типа «Если ошибок не было найдено, давайте выполним print».