Исключения Python
Исключение — это непредвиденное событие, которое возникает во время выполнения программы. Например,
divide_by_zero = 7 / 0
Приведённый выше код вызывает исключение, так как невозможно разделить число на 0.
Давайте подробно изучим исключения Python.
Логические ошибки Python (исключения)
Ошибки, возникающие во время выполнения (после прохождения теста синтаксиса), называются исключениями или логическими ошибками.
Например, они возникают, когда мы
пытаемся открыть файл (для чтения), который не существует (
FileNotFoundError)пытаемся разделить число на ноль (
ZeroDivisionError)пытаемся импортировать модуль, который не существует (
ImportError) и так далее.
Всякий раз, когда возникают такого рода ошибки времени выполнения, Python создаёт объект исключения.
Если он не обработан должным образом, выводится трассировка этой ошибки вместе с некоторыми подробностями о причине её возникновения.
Посмотрим, как Python обрабатывает эти ошибки:
divide_numbers = 7 / 0
print(divide_numbers)
Вывод
Traceback (most recent call last):
File "<string>", line 1, in <module>
ZeroDivisionError: division by zero
Здесь при попытке выполнить деление 7 / 0 программа выбрасывает системное исключение ZeroDivisionError.
Встроенные исключения Python
Недопустимые операции могут вызывать исключения. В Python имеется множество встроенных исключений, которые вызываются при возникновении соответствующих ошибок.
Мы можем просмотреть все встроенные исключения, используя встроенную функцию local() следующим образом:
print(dir(locals()['__builtins__']))
Здесь locals()['__builtins__'] вернёт модуль встроенных исключений, функций и атрибутов, а dir позволяет нам перечислить эти атрибуты в виде строк.
Некоторые из распространённых встроенных исключений в программировании на Python вместе с ошибками, которые их вызывают, перечислены ниже:
Исключение |
Причина ошибки |
|---|---|
|
Возникает, когда инструкция |
|
Возникает, когда не удаётся присвоить атрибут или обратиться к нему. |
|
Возникает, когда функция |
|
Возникает при сбое операции с плавающей точкой. |
|
Возникает при вызове метода |
|
Возникает, когда импортированный модуль не найден. |
|
Возникает, когда индекс последовательности находится вне диапазона. |
|
Возникает, когда ключ не найден в словаре. |
|
Возникает, когда пользователь нажимает клавишу прерывания ( |
|
Возникает, когда операции не хватает памяти. |
|
Возникает, когда переменная не найдена в локальной или глобальной области видимости. |
|
Вызывается абстрактными методами. |
|
Возникает, когда системная операция вызывает ошибку, связанную с системой. |
|
Возникает, когда результат арифметической операции слишком велик для представления. |
|
Возникает, когда слабая ссылка используется для доступа к объекту, собранному сборщиком мусора. |
|
Возникает, когда ошибка не попадает ни в одну из других категорий. |
|
Возникает при вызове функции |
|
Возникает при обнаружении синтаксической ошибки парсером. |
|
Возникает при неправильном отступе. |
|
Возникает, когда отступы состоят из несогласованных табуляций и пробелов. |
|
Возникает, когда интерпретатор обнаруживает внутреннюю ошибку. |
|
Возникает при вызове функции |
|
Возникает, когда функция или операция применяется к объекту неправильного типа. |
|
Возникает, когда делается ссылка на локальную переменную в функции или методе, но этой переменной не было присвоено значение. |
|
Возникает при ошибке кодирования или декодирования, связанной с Unicode. |
|
Возникает при ошибке кодирования, связанной с Unicode. |
|
Возникает при ошибке декодирования, связанной с Unicode. |
|
Возникает при ошибке перевода, связанной с Unicode. |
|
Возникает, когда функция получает аргумент правильного типа, но неподходящего значения. |
|
Возникает, когда второй операнд операции деления или взятия остатка равен нулю. |
При необходимости мы также можем определить собственные исключения в Python. Чтобы узнать о них больше, посетите Пользовательские исключения Python.
Мы можем обрабатывать эти встроенные и пользовательские исключения в Python с помощью инструкций try, except и finally. Чтобы узнать о них больше, посетите Инструкции try, except и finally Python.
Ошибка и исключение в Python
Ошибки представляют такие условия, как ошибка компиляции, синтаксическая ошибка, ошибка в логической части кода, несовместимость библиотек, бесконечная рекурсия и т. д.
Ошибки обычно находятся вне контроля программиста, и мы не должны пытаться обрабатывать ошибки.
Исключения могут быть пойманы и обработаны программой.
Теперь, когда мы знаем об исключениях, в следующем уроке мы узнаем об обработке исключений.