Bootstrap

как работают исключения exceptions в python на примере.

как работают исключения exceptions в python на примере.

обратите внимание на это приложение, особенно на все print, что они должны выводить. и что будет если вместо вызова исключения raise вы поставите pass какие print будут вызываны тогда. это поможет понять как работают исключения.

  • Класс исключения MyExceptions определен с помощью наследования от Exception.
  • Обработчик исключения except MyExceptions: в функции doit() перехватывает исключение MyExceptions.
  • После того как функция myfunc1() вызывает исключение, выполнение передается вверх по стеку вызовов, пока не будет найден соответствующий обработчик исключения или пока программа не завершится, если обработчик не будет найден.
  • После обработки исключения в функции doit(), другие print в коде не будут выполнены, так как выполнение функции будет прервано после обработки исключения.

Terminal:

# Определение класса исключения
class MyExceptions(Exception):
    pass

def doit():
    try:
        doit1()
    except MyExceptions:
        print("Обработка исключения MyExceptions в функции doit")

def doit1():
    doit2()
    print(1)

def doit2():
    myfunc1()
    print(2)

def myfunc1():
    #pass
    raise MyExceptions("Пример исключения MyExceptions")

# Вход в приложение
doit()
 

создайте файл например except.py с этим кодом, и выполните python except.py

а затем закомментируйте reise и расскомментируйте pass

и снова выполните скрипт, и сравните вывод в консоле, чтобы понять логику происходящего

Вот ещё один пример

Когда вы вызываете raise для возбуждения исключения, выполнение кода в текущем блоке прекращается, и интерпретатор Python начинает искать соответствующий обработчик для этого исключения. Если обработчик не будет найден в текущем блоке, интерпретатор поднимается по стеку вызовов и проверяет более высокие уровни кода на наличие соответствующего обработчика.

Если ни в одном из вышестоящих блоков кода не найден подходящий обработчик исключения, выполнение программы будет прервано, и интерпретатор Python выдаст трассировку стека и сообщение об ошибке.

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

Terminal:

try:
    raise ValueError("Пример исключения")
    print("Этот код не будет выполнен")
except ValueError as e:
    print("Обработчик исключения:", e)

print("Этот код будет выполнен после обработки исключения")

 

В этом примере после вызова raise код, следующий за ним, не будет выполнен. Однако, после обработки исключения в блоке except, выполнение программы продолжится, и код, следующий за блоком except, будет выполнен.

Копирование материалов разрешается только с указанием автора Roman Sakhno и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

крипто-донат, на развитие сайта itdid.ru:

В новом окне с терминалом itdid.ru, введите любую сумму: