Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

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

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

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

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

Когда вы запускаете программу на Python, интерпретатор немедленно останавливает выполнение, если встречает необработанную ошибку. Эти ошибки делятся на две большие категории:

  1. Синтаксические ошибки — проблемы, обнаруживаемые при парсинге.
  2. Логические ошибки (исключения) — проблемы, возникающие во время выполнения кода.

Синтаксические ошибки в Python

Синтаксическая ошибка возникает, когда исходный код нарушает грамматические правила Python. Интерпретатор указывает на точное место с кареткой (^) в сообщении об ошибке.

> >>> if a < 3
File "<interactive input>", line 1
if a < 3
^
SyntaxError: invalid syntax

В этом примере отсутствие двоеточия (:) после оператора if вызывает SyntaxError.


Логические ошибки (исключения) в Python

Логические ошибки, или исключения, проявляются только после того, как код прошёл проверку синтаксиса. Частые примеры:

Когда исключение возбуждается, Python создаёт объект исключения. Если оно остаётся необработанным, печатается трассировка стека, показывающая стек вызовов и причину сбоя.

> >>> 1 / 0
Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
ZeroDivisionError: division by zero
> >>> open("imaginary.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: 'imaginary.txt'

Встроенные исключения Python

Интерпретатор Python возбуждает широкий спектр встроенных исключений для сигнализации разных условий сбоя. Их можно перечислить так:

print(dir(locals()['__builtins__']))

Ниже — краткий справочник некоторых самых часто встречающихся встроенных исключений и ситуаций, их вызывающих:

ИсключениеПричина ошибки
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 User‑defined Exceptions.

Обработка исключений проста с блоками try, except и finally. Для глубокого погружения см. Python try, except and finally statements.

Python

  1. Ключевые слова и идентификаторы в Python: мастерство зарезервированных слов и соглашений об именовании
  2. Операторы, отступы и комментарии в Python: понятное руководство
  3. Переменные, константы и литералы в Python — подробное руководство
  4. Мастерство преобразования типов в Python: Полное руководство
  5. Мастерство ввода-вывода и импорта модулей в Python: Практическое руководство
  6. Глобальные, локальные и nonlocal переменные в Python: понимание и применение
  7. Числа, преобразование типов и математика в Python: полное руководство
  8. Управление директориями и файлами в Python: полное руководство
  9. Пользовательские исключения в Python: практическое руководство
  10. Получение текущей даты и времени в Python: практическое руководство