Добавить в корзинуПозвонить
Найти в Дзене
Old Programmer

Исключения в Python. Программная генерация исключений. Статья 5

Статья является продолжением статей: Генерация собственных исключений С помощью оператора raise в Python можно генерировать свои собственные исключения. Если посмотреть на иерархию исключений, то возникает вопрос, а собственно зачем генерировать сои исключения. если данная иерархия охватывает все возможные критические ошибки. А все остальное можно ведь решить возвращая ошибки из функций. Это действительно так, НО. Дело в том, что может быть целая цепочка вызовов функций, а вам нужно среагировать на ошибку, которая находиться где-то в конце цепочки. Собственное исключение (да и не только собственное) позволяет вам выйти из цепочки сразу в ее начало и перейти в раздел except. Вы тем самым абсолютно не заботитесь о том, как будет проходить этот выход. Интерпретатор сразу выведет вас на начало и переведет в раздел исключения. Рассмотрим следующий пример. Имеется цепочка функций. "Ошибка" может произойти на каждом уровне. Вникните в эту программу. Попробуйте запустить ее для 3 не отри

Статья является продолжением статей:

  • Язык Python. Обработка исключений (try, except, finally). Статья 1
  • Программирование на Python. Обработка исключений (try, except, finally). Статья 2
  • Обработка исключений на Python (try, except, finally, else). Статья 3
  • Обработка исключений в языке python. Вложенные исключения. Статья 4

Генерация собственных исключений

С помощью оператора raise в Python можно генерировать свои собственные исключения. Если посмотреть на иерархию исключений, то возникает вопрос, а собственно зачем генерировать сои исключения. если данная иерархия охватывает все возможные критические ошибки. А все остальное можно ведь решить возвращая ошибки из функций. Это действительно так, НО. Дело в том, что может быть целая цепочка вызовов функций, а вам нужно среагировать на ошибку, которая находиться где-то в конце цепочки. Собственное исключение (да и не только собственное) позволяет вам выйти из цепочки сразу в ее начало и перейти в раздел except. Вы тем самым абсолютно не заботитесь о том, как будет проходить этот выход. Интерпретатор сразу выведет вас на начало и переведет в раздел исключения.

Рассмотрим следующий пример. Имеется цепочка функций. "Ошибка" может произойти на каждом уровне. Вникните в эту программу. Попробуйте запустить ее для 3 не отрицательных чисел, двух не отрицательных числах, и одном не отрицательном числе и всех отрицательных числах. Обратите внимание, что программа ни разу не выведет вам False. Это как раз и говорит о том, что интерпретатор при выполнении raise сразу выводит выполнение в начало цепочки, в основную программу, не важно на каком при этом уровне происходило выполнение.

Мы закончили тему исключений в Python, будут еще статьи об исключениях в C++, но это уже совсем другая история.

Пока любители языка Python . Подписываемся на мой канал Old Programmer.

Программа try4006.py
Программа try4006.py