Ошибки Python и встроенные исключения

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

Видео: обработка исключений Python

Мы можем совершать определенные ошибки при написании программы, которые приводят к ошибкам при попытке ее запустить. Программа python завершает работу, как только обнаруживает необработанную ошибку. Эти ошибки можно в общих чертах разделить на два класса:

  1. Синтаксические ошибки
  2. Логические ошибки (исключения)

Ошибки синтаксиса 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.

Интересные статьи...