Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Инструкция try/else в Python

17 октября 2015 г. Archy Просмотров: 11863 RSS
intructzia-try-else-python.png

Назначение предложения else в инструкции try на первый взгляд не всегда очевидно для тех, кто только начинает осваивать язык программирования Python.

Тем не менее, без этого предложения нет никакого другого способа узнать(не устанавливая и не проверяя флаги) - выполнение программы продолжилось потому, что исключение в блоке try не было возбуждено, или потому, что исключение было перехвачено и обработано.

Пример:

try:
    # Выполняемый код
except:
    # Обработка исключения
# Программа оказалась здесь потому, что исключение было обработано
# или потому, что его не возникло?

Точно так же, как инструкция else в операторах цикла делает причину выхода из цикла более очевидной, предложение else в инструкции try однозначно и очевидно сообщает о произошедшем:

try:
    # Выполняемый код
except IndexError:
    # Обработка исключения
else:
    # Исключение не было возбуждено

То же самое поведение можно имитировать, переместив содержимое блока else в блок try:

try:
    # Выполняемый код
    # Исключение не было возбуждено
except IndexError:
    # Обработка исключения

Но это может привести к некорректной классификации исключения. Если какая-либо из инструкции в блоке "Исключение не было возбуждено" приведет к появлению исключения IndexError, оно будет зарегистрировано как ошибка в блоке try и соответственно, ошибочно будет передано обработчику исключения ниже(тонко, но верно!).

При явном использовании выражения else логика выполнения становится более очевидной и гарантируется, что обработчики исключения будут вызываться только для обработки истинных ошибок в блоке, обернутом инструкцией try, а не при выполнении действий, предусматриваемых в блоке else.

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