В этой статье вы узнаете о типах ошибок, которые вызываются интерпретатором, если что то в вашей программе идет не так. Все типы ошибок в Python можно разделить на два класса.
- Синтаксические ошибки
- Логические ошибки
При возникновении, какой либо ошибки, которую программа не может обработать, вызывается тип ошибки указывающая на проблему. Избежать эти ошибки поможет нам обработка исключений в Python.
Синтаксические ошибки в Python
Такого рода ошибка возникает при неправильном использовании структуры языка. Рассмотрим пример такой ошибки:
for i in range(0,10) print(i) Результат: SyntaxError: invalid syntax
Естественно, мы нарушили структура языка, а именно не поставили двоеточие в конце цикла for.
Логические ошибки в Python
Логические ошибка возникают, если у вас нет синтаксической ошибки. То есть интерпретатор Python, сначала анализирует ваш код на предмет наличия синтаксических ошибок. типы логических ошибок бывают разными, например:
- Если мы пытаемся открыть файл для чтения которого не существует, то словим ошибку FileNotFoundError
- Попытаемся разделить на ноль, получим ZeroDivisionError
- Попытаемся импортировать модуль, которого не существует, получим ImportError
И это только малая часть, Python не разрешит нам уничтожить мир, разделив число на ноль=). Каждый раз, когда Python видит необработанную ошибку, он пишет нам, что произошла ошибка по той или иной причине. Рассмотрим пример обработки ошибки.
100 / 0
Результат:
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero
open("filenot.txt")
Результат:
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
FileNotFoundError: [Errno 2]
No such file or directory: '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 | Когда функция получает аргумент с неправильным значением |
| ZeroDivisionError | При делении на ноль |
|---|
В Python, мы так же сами можем создать свои исключения, поэтому внимательно читайте документацию сторонних модулей, которые вы используете. Подробнее об этом в разделе пользовательские исключения Python.
В одной из предыдущих статей, мы с вами уже затрагивали тему обработки ошибок, с помощью try…except…finally, подробнее о них, в статье обработка исключений





