English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Python (интерпретатор) вызывает исключения при возникновении ошибок. Например: деление на ноль. В этой статье вы узнаете о различных内置ых обработках исключений Python.
Во время написания программы мы часто сталкиваемся с ошибками.
Ошибка, вызванная несоблюдением правильной структуры языка (синтаксиса), называется синтаксической ошибкой или ошибкой разбора.
>>> if a < 3 Файл "<interactive input>", строка 1 if a < 3 ^ SyntaxError: недопустимый синтаксис
Здесь мы можем заметить, что в операторе if пропущена точка с запятой.
Ошибка также может возникнуть во время выполнения, такие ошибки называются исключениями. Например, когда мы пытаемся открыть файл, который не существует (FileNotFoundError), разделить число на ноль (ZeroDivisionError), найти модуль, который мы пытаемся импортировать (ImportError), и т.д., в таких случаях может произойти это.
Каждый раз, когда возникает такое类型的 runtime-ошибка, Python создает объект исключения. Если с ним не обращаться правильно, он выводит traceback ошибки и некоторые детальные informacje о причине ошибки.
>>> 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 существует множество встроенных исключений, которые вызываются при возникновении соответствующих ошибок. Мы можем использовать встроенную функцию local(), чтобы увидеть все内置енные исключения, как показано ниже.
>>> locals()['__builtins__']
Это вернет словарь встроенных исключений, функций и свойств.
Ниже приведен список некоторых общих встроенных исключений Python и ошибок, вызывающих их.
Исключение | Причина ошибки |
---|---|
AssertionError | Вскрывается при неудаче assert-высказывания. |
AttributeError | Вскрывается при неудачной ассигнации или обращении к свойству. |
EOFError | Вскрывается при достижении конца файла в функции input(). |
FloatingPointError | Вскрывается при неудачном вычислении с плавающей запятой. |
GeneratorExit | Вскрывается при вызове метода генератора в close(). |
ImportError | Вскрывается при отсутствии импортированного модуля. |
IndexError | Вскрывается при выходе индекса последовательности за пределы диапазона. |
KeyError | Вскрывается при отсутствии ключа в словаре. |
KeyboardInterrupt | Вскрывается при нажатии пользователем клавиши прерывания (Ctrl + c или Delete). |
MemoryError | Вскрывается при нехватке памяти для операции. |
NameError | Вскрывается при отсутствии переменной в локальном или глобальном масштабе. |
NotImplementedError | Метод, который еще не реализован. |
OSError | Виникает при возникновении системной ошибки, вызываемой системной операцией. |
OverflowError | Виникает при возникновении arithmetic ошибки, результат которой слишком велик для представления. |
ReferenceError | Виникает при попытке доступа к объектам garbage collection через слабые ссылки. |
RuntimeError | Виникает при возникновении ошибки, не относящейся к другой категории. |
StopIteration | Виникает функцией next(), чтобы указать, что итератор не может вернуть другие элементы. |
SyntaxError | Виникает при обнаружении синтаксической ошибки анализатором. |
IndentationError | Виникает при неправильной отступке. |
TabError | Виникает при использовании不一致ных табуляций и пробелов для отступов. |
SystemError | Виникает при обнаружении интерпретатором внутренней ошибки. |
SystemExit | Виникает функцией sys.exit(). |
TypeError | Виникает при применении функции или операции к объекту неправильного типа. |
UnboundLocalError | Виникает при попытке обращения к локальной переменной функции или метода без привязки значения к этой переменной. |
UnicodeError | Виникает при возникновении Unicode-ошибок в процессе кодирования или декодирования. |
UnicodeEncodeError | Виникает при возникновении Unicode-ошибок в процессе кодирования. |
UnicodeDecodeError | Виникает при возникновении Unicode-ошибок в процессе декодирования. |
UnicodeTranslateError | Виникает при возникновении Unicode-ошибок в процессе перевода. |
ValueError | Виникает при получении функции правильного типа, но неверного значения параметра. |
ZeroDivisionError | Виникает при выполнении деления или модуляции вторым операндом ноль. |
Мы также можем определить свои собственные исключения в Python (если это необходимо). Ознакомьтесь с этой страницей, чтобы узнать оОпределенные пользователем исключенияБолее подробная информация.
Мы можем использовать инструкции try, except и finallyОбработка этих вbuilt-in и пользовательских исключений в Python.