В этом руководстве вы узнаете о различных типах ошибок и исключений, встроенных в Python. Они возникают всякий раз, когда интерпретатор Python обнаруживает ошибки.
Видео: обработка исключений Python
Мы можем совершать определенные ошибки при написании программы, которые приводят к ошибкам при попытке ее запустить. Программа python завершает работу, как только обнаруживает необработанную ошибку. Эти ошибки можно в общих чертах разделить на два класса:
- Синтаксические ошибки
- Логические ошибки (исключения)
Ошибки синтаксиса Python
Ошибка, вызванная несоблюдением правильной структуры (синтаксиса) языка, называется синтаксической ошибкой или ошибкой синтаксического анализа .
Давайте посмотрим на один пример:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
Как показано в примере, стрелка указывает, где синтаксический анализатор обнаружил синтаксическую ошибку.
Здесь мы можем заметить, что :
в if
инструкции отсутствует двоеточие .
Логические ошибки Python (исключения)
Ошибки, возникающие во время выполнения (после прохождения проверки синтаксиса), называются исключениями или логическими ошибками .
Например, они возникают, когда мы пытаемся открыть файл (для чтения), который не существует ( FileNotFoundError
), пытаемся разделить число на ноль ( ZeroDivisionError
) или пытаемся импортировать несуществующий модуль ( ImportError
).
Каждый раз, когда возникают эти типы ошибок времени выполнения, Python создает объект исключения. Если не обработать должным образом, он распечатывает трассировку этой ошибки вместе с некоторыми подробностями о том, почему эта ошибка произошла.
Давайте посмотрим, как Python обрабатывает эти ошибки:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
Встроенные исключения Python
Незаконные операции могут вызывать исключения. В Python есть множество встроенных исключений, которые возникают при возникновении соответствующих ошибок. Мы можем просмотреть все встроенные исключения с помощью встроенной local()
функции следующим образом:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
вернет модуль встроенных исключений, функций и атрибутов. dir
позволяет нам перечислить эти атрибуты в виде строк.
Ниже перечислены некоторые из распространенных встроенных исключений в программировании на Python, а также ошибки, вызывающие их:
Исключение | Причина ошибки |
---|---|
AssertionError | Возникает, когда assert утверждение не выполняется. |
AttributeError | Возникает при сбое присвоения атрибута или ссылки. |
EOFError | Возникает, когда input() функция достигает условия конца файла. |
FloatingPointError | Возникает при сбое операции с плавающей запятой. |
GeneratorExit | Поднимается при close() вызове метода генератора . |
ImportError | Возникает, когда импортированный модуль не найден. |
IndexError | Возникает, когда индекс последовательности выходит за пределы допустимого диапазона. |
KeyError | Возникает, когда ключ не найден в словаре. |
KeyboardInterrupt | Возникает, когда пользователь нажимает клавишу прерывания ( Ctrl+C или Delete ). |
MemoryError | Возникает, когда для операции не хватает памяти. |
NameError | Возникает, когда переменная не найдена в локальной или глобальной области. |
NotImplementedError | Поднят абстрактными методами. |
OSError | Возникает, когда работа системы вызывает ошибку, связанную с системой. |
OverflowError | Возникает, когда результат арифметической операции слишком велик для представления. |
ReferenceError | Возникает, когда слабый ссылочный прокси используется для доступа к референту со сборкой мусора. |
RuntimeError | Возникает, когда ошибка не попадает ни в одну другую категорию. |
StopIteration | Возникает next() функцией, чтобы указать, что итератор больше не может вернуть элемент. |
SyntaxError | Возникает парсером при обнаружении синтаксической ошибки. |
IndentationError | Возникает при неправильном отступе. |
TabError | Возникает, когда отступ состоит из несовместимых знаков табуляции и пробелов. |
SystemError | Возникает, когда интерпретатор обнаруживает внутреннюю ошибку. |
SystemExit | Поднят sys.exit() функцией. |
TypeError | Возникает, когда функция или операция применяется к объекту неправильного типа. |
UnboundLocalError | Возникает, когда делается ссылка на локальную переменную в функции или методе, но к этой переменной не привязано никакого значения. |
UnicodeError | Возникает при возникновении ошибки кодирования или декодирования, связанной с Unicode. |
UnicodeEncodeError | Возникает, когда во время кодирования возникает ошибка, связанная с Unicode. |
UnicodeDecodeError | Возникает, когда во время декодирования возникает ошибка, связанная с Unicode. |
UnicodeTranslateError | Возникает, когда во время перевода возникает ошибка, связанная с Unicode. |
ValueError | Возникает, когда функция получает аргумент правильного типа, но неправильное значение. |
ZeroDivisionError | Возникает, когда второй операнд деления или операции по модулю равен нулю. |
При необходимости мы также можем определить собственные исключения в Python. Чтобы узнать о них больше, посетите Пользовательские исключения Python.
Мы можем обрабатывать эти встроенные и пользовательские исключения в Python с использованием try
, except
и finally
заявление. Чтобы узнать о них больше, посетите инструкции Python try, except и finally.