В данной статье вы познакомитесь с разновидностями ошибок, возникающих в процессе работы интерпретатора, когда ваша программа функционирует некорректно. Все ошибки в Python можно классифицировать на две основные категории.
- Синтаксические ошибки
- Логические ошибки
В случае возникновения ошибки, которую программа не в состоянии решить, появляется тип ошибки, сигнализирующий о наличии проблемы. Для предотвращения подобных ошибок полезно использовать механизм обработки исключений в Python.
Синтаксические ошибки в Python
Подобная ошибка появляется из-за неверного применения синтаксиса языка. Приведем пример такой ошибки:
for i in range(0,10) print(i) Результат: SyntaxError: invalid syntax
Естественно, мы нарушили структура языка, а именно не поставили двоеточие в конце цикла for.
Логические ошибки в Python
Логические ошибки появляются в случае отсутствия синтаксических недочетов. Это означает, что интерпретатор Python сначала scrutinizes ваш код на выявление синтаксических проблем. Существует множество видов логических ошибок, например:
- Если мы пытаемся открыть файл для чтения которого не существует, то словим ошибку FileNotFoundError
- Попытаемся разделить на ноль, получим ZeroDivisionError
- Попытаемся импортировать модуль, которого не существует, получим ImportError
И это лишь небольшая часть, Python не позволит нам разрушить мир, попытавшись разделить число на ноль=). Всякий раз, когда Python сталкивается с необработанной ошибкой, он сообщает нам о том, что что-то пошло не так по той или иной причине. Рассмотрим пример обработки ошибок.
100 / 0 Результат: Traceback (последний вызов был наименее успешным): Файл "", строка 301, в runcode Файл "", строка 1, в ZeroDivisionError: деление на ноль open("filenot.txt") Результат: Traceback (последний вызов был наименее успешным): Файл "", строка 301, в runcode Файл "", строка 1, в FileNotFoundError: [Errno 2] Нет такого файла или каталога: ‘filenot.txt’
Исключения Python
В Python есть довольно большое количество встроенных исключений, которые вызываются при возникновении соответствующих им ошибок. Ниже представлена таблица со списками исключений.
| Исключения | Причина |
| AssertionError | Происходит при неудачном выполнении оператора assert. |
| AttributeError | Возникает, когда атрибут или ссылка не могут быть присвоены. |
| EOFError | Вызывается, когда функция input() достигает конца файла. |
| FloatingPointError | Возникает при сбое в вычислениях с плавающей запятой. |
| GeneratorExit | Вызывается при завершении работы генератора через метод close(). |
| ImportError | Происходит, если не удается найти импортируемый модуль. |
| IndexError | Возникает, когда индекс выходит за пределы последовательности. |
| KeyError | Возникает в случае отсутствия ключа в словаре. |
| KeyboardInterrupt | Вызывается при прерывании с помощью клавиатуры. |
| MemoryError | Происходит, когда не хватает памяти для выполнения операции. |
| NameError | Возникает, если переменная не найдена в текущей или глобальной области видимости. |
| NotImplementedError | Свыше абстрактных методов. |
| OSError | Вызывается при возникновении ошибки, связанной с операционной системой. |
| OverflowError | Происходит, если результат арифметической операции превышает допустимые пределы. |
| ReferenceError | Вызывается при доступе к объекту, который был собран сборщиком мусора, через слабую ссылку. |
| RuntimeError | Происходит, когда возникает ошибка, не попадающая под другие категории. |
| StopIteration | Возникает при вызове функции next(), сигнализирующей об отсутствии элементов. |
| SyntaxError | Ошибка синтаксиса. |
| IndentationError | Возникает при нарушении правил отступов. |
| TabError | Происходит из-за смешивания табуляций и пробелов для отступов. |
| SystemError | Ошибка, возникающая в интерпретаторе. |
| SystemExit | Вызывается при использовании функции sys.exit(). |
| TypeError | Ошибка, связанная с несовпадением типов данных. |
| UnboundLocalError | Возникает, когда происходит ссылка на локальную переменную, которая не была инициализирована. |
| UnicodeError | Ошибка, связанная с кодировкой символов. |
| UnicodeEncodeError | Ошибка кодирования символов. |
| UnicodeDecodeError | Ошибка декодирования символов. |
| UnicodeTranslateError | Ошибка кодирования символов. |
| ValueError | Когда функция получает аргумент с недопустимым значением. |
В Python у нас есть возможность создавать собственные исключения, поэтому важно тщательно изучать документацию сторонних библиотек, которые вы используете. Более подробную информацию можно найти в разделе, посвященном пользовательским исключениям Python.
В одной из недавних статей мы обсуждали обработку ошибок с использованием конструкции try…except…finally; о них можно прочитать подробнее в статье, посвященной обработке исключений.




