exceptions.md
1> **Источник:** https://python-all.ru/2.7/library/exceptions.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 6. Встроенные исключения89Исключения должны быть объектами классов. Исключения определены в модуле [`exceptions`](https://python-all.ru/2.7/library/exceptions.html#module-exceptions). Этот модуль никогда не нужно импортировать явно: исключения предоставляются во встроенном пространстве имен, а также в модуле [`exceptions`](https://python-all.ru/2.7/library/exceptions.html#module-exceptions).1011Для исключений-классов в операторе [`try`](https://python-all.ru/2.7/reference/compound_stmts.html#try) с предложением [`except`](https://python-all.ru/2.7/reference/compound_stmts.html#except) которое упоминает конкретный класс, это предложение также обрабатывает любые классы исключений, производные от этого класса (но не классы исключений, от которых *он* унаследован). Два класса исключений, не связанных отношением наследования, никогда не эквивалентны, даже если они имеют одинаковое имя.1213Перечисленные ниже встроенные исключения могут быть сгенерированы интерпретатором или встроенными функциями. Если не указано иное, они имеют «связанное значение», указывающее подробную причину ошибки. Это может быть строка или кортеж, содержащий несколько элементов информации (например, код ошибки и строка, объясняющая код). Связанное значение – это второй аргумент оператора [`raise`](https://python-all.ru/2.7/reference/simple_stmts.html#raise). Если класс исключения унаследован от стандартного корневого класса [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException), связанное значение присутствует как атрибут `args` экземпляра исключения.1415Пользовательский код может возбуждать встроенные исключения. Это можно использовать для проверки обработчика исключений или для сообщения об ошибке «точно так же», как если бы интерпретатор возбудил то же самое исключение; однако следует помнить, что ничто не мешает пользовательскому коду возбудить неподходящую ошибку.1617Встроенные классы исключений могут быть подклассифицированы для определения новых исключений; программистам рекомендуется наследовать новые исключения от класса [`Exception`](https://python-all.ru/2.7/library/exceptions.html#exceptions.Exception) или одного из его подклассов, а не от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException). Дополнительная информация об определении исключений доступна в Python Tutorial в разделе [Пользовательские исключения](https://python-all.ru/2.7/tutorial/errors.html#tut-userexceptions).1819Следующие исключения используются только как базовые классы для других исключений.2021#### `exception BaseException`2223Базовый класс для всех встроенных исключений. Он не предназначен для прямого наследования пользовательскими классами (для этого используйте [`Exception`](https://python-all.ru/2.7/library/exceptions.html#exceptions.Exception)). Если [`str()`](https://python-all.ru/2.7/library/functions.html#str) или [`unicode()`](https://python-all.ru/2.7/library/functions.html#unicode) вызывается для экземпляра этого класса, возвращается представление аргумента(ов) экземпляра или пустая строка, если аргументов не было.2425Новое в версии 2.5.2627#### `args`2829Кортеж аргументов, переданных конструктору исключения. Некоторые встроенные исключения (например, [`IOError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.IOError)) ожидают определённое количество аргументов и присваивают элементам этого кортежа специальное значение, в то время как другие обычно вызываются только с одной строкой, содержащей сообщение об ошибке.3031#### `exception Exception`3233Все встроенные исключения, не приводящие к завершению системы, являются производными от этого класса. Все определённые пользователем исключения также должны наследоваться от этого класса.3435Изменено в версии 2.5: Изменено наследование от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException).3637#### `exception StandardError`3839Базовый класс для всех встроенных исключений, кроме [`StopIteration`](https://python-all.ru/2.7/library/exceptions.html#exceptions.StopIteration), [`GeneratorExit`](https://python-all.ru/2.7/library/exceptions.html#exceptions.GeneratorExit), [`KeyboardInterrupt`](https://python-all.ru/2.7/library/exceptions.html#exceptions.KeyboardInterrupt) и [`SystemExit`](https://python-all.ru/2.7/library/exceptions.html#exceptions.SystemExit). Сам [`StandardError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.StandardError) унаследован от [`Exception`](https://python-all.ru/2.7/library/exceptions.html#exceptions.Exception).4041#### `exception ArithmeticError`4243Базовый класс для встроенных исключений, которые возбуждаются при различных арифметических ошибках: [`OverflowError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OverflowError), [`ZeroDivisionError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ZeroDivisionError), [`FloatingPointError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.FloatingPointError).4445#### `exception BufferError`4647Возбуждается, когда не может быть выполнена операция, связанная с [буфером](https://python-all.ru/2.7/c-api/buffer.html#bufferobjects).4849#### `exception LookupError`5051Базовый класс для исключений, возбуждаемых, когда ключ или индекс, используемые в отображении или последовательности, недействительны: [`IndexError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.IndexError), [`KeyError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.KeyError). Оно может быть возбуждено напрямую с помощью [`codecs.lookup()`](https://python-all.ru/2.7/library/codecs.html#codecs.lookup).5253#### `exception EnvironmentError`5455Базовый класс для исключений, которые могут возникать вне системы Python: [`IOError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.IOError), [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError). Когда исключения этого типа создаются с кортежем из двух элементов, первый элемент доступен в атрибуте [`errno`](https://python-all.ru/2.7/library/errno.html#module-errno) экземпляра (предполагается, что это номер ошибки), а второй элемент – в атрибуте `strerror` (обычно это связанное сообщение об ошибке). Сам кортеж также доступен в атрибуте `args`.5657Новое в версии 1.5.2.5859Когда исключение [`EnvironmentError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EnvironmentError) создается с кортежем из трех элементов, первые два элемента доступны, как указано выше, а третий элемент доступен в атрибуте `filename`. Однако для обратной совместимости атрибут `args` содержит только кортеж из двух элементов – первых двух аргументов конструктора.6061Атрибут `filename` равен `None`, когда это исключение создается с количеством аргументов, отличным от 3. Атрибуты [`errno`](https://python-all.ru/2.7/library/errno.html#module-errno) и `strerror` также равны `None`, когда экземпляр создан с количеством аргументов, отличным от 2 или 3. В последнем случае `args` содержит точные аргументы конструктора в виде кортежа.6263Следующие исключения – это те, которые действительно возбуждаются.6465#### `exception AssertionError`6667Возбуждается, когда оператор [`assert`](https://python-all.ru/2.7/reference/simple_stmts.html#assert) завершается неудачно.6869#### `exception AttributeError`7071Возбуждается при неудачном обращении к атрибуту (см. [Обращения к атрибутам](https://python-all.ru/2.7/reference/expressions.html#attribute-references)) или присваивании. (Если объект вообще не поддерживает обращения к атрибутам или их присваивание, возбуждается [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError).)7273#### `exception EOFError`7475Возбуждается, когда одна из встроенных функций ([`input()`](https://python-all.ru/2.7/library/functions.html#input) или [`raw_input()`](https://python-all.ru/2.7/library/functions.html#raw_input)) достигает условия конца файла (EOF), не прочитав никаких данных. (Примечание: методы [`file.read()`](https://python-all.ru/2.7/library/stdtypes.html#file.read) и [`file.readline()`](https://python-all.ru/2.7/library/stdtypes.html#file.readline) возвращают пустую строку при достижении EOF.)7677#### `exception FloatingPointError`7879Возникает при ошибке операции с плавающей запятой. Это исключение всегда определено, но может быть вызвано только при сборке Python с опцией `--with-fpectl`, или если символ `WANT_SIGFPE_HANDLER` определён в файле `pyconfig.h`.8081#### `exception GeneratorExit`8283Возбуждается, когда вызывается метод `close()` [генератора](https://python-all.ru/2.7/glossary.html#term-generator). Он напрямую наследуется от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException) вместо [`StandardError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.StandardError) поскольку технически не является ошибкой.8485Новое в версии 2.5.8687Изменено в версии 2.6: Изменено наследование от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException).8889#### `exception IOError`9091Возбуждается, когда операция ввода-вывода (например, оператор [`print`](https://python-all.ru/2.7/reference/simple_stmts.html#print), встроенная функция [`open()`](https://python-all.ru/2.7/library/functions.html#open) или метод файлового объекта) завершается ошибкой по причине, связанной с вводом-выводом, например «файл не найден» или «диск заполнен».9293Этот класс унаследован от [`EnvironmentError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EnvironmentError). См. обсуждение выше для получения дополнительной информации об атрибутах экземпляра исключения.9495Изменено в версии 2.6: Изменено: [`socket.error`](https://python-all.ru/2.7/library/socket.html#socket.error) теперь использует этот класс как базовый.9697#### `exception ImportError`9899Возбуждается, когда оператор [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import) не может найти определение модуля или когда `from ... import` не может найти имя, которое нужно импортировать.100101#### `exception IndexError`102103Возбуждается, когда индекс последовательности выходит за пределы диапазона. (Индексы срезов автоматически усекаются, чтобы попасть в допустимый диапазон; если индекс не является обычным целым числом, возбуждается [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError).)104105#### `exception KeyError`106107Вызывается, когда ключ отображения (словаря) не найден среди существующих ключей.108109#### `exception KeyboardInterrupt`110111Возбуждается, когда пользователь нажимает клавишу прерывания (обычно `Control-C` или `Delete`). Во время выполнения регулярно выполняется проверка на наличие прерываний. Прерывания, введенные, когда встроенная функция [`input()`](https://python-all.ru/2.7/library/functions.html#input) или [`raw_input()`](https://python-all.ru/2.7/library/functions.html#raw_input) ожидает ввода, также вызывают это исключение. Исключение наследуется от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException), чтобы не быть случайно перехваченным кодом, который перехватывает [`Exception`](https://python-all.ru/2.7/library/exceptions.html#exceptions.Exception), и тем самым не препятствовать выходу интерпретатора.112113Изменено в версии 2.5: Изменено наследование от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException).114115#### `exception MemoryError`116117Вызывается, когда операция исчерпывает память, но ситуацию ещё можно исправить (удалив некоторые объекты). Связанное значение – строка, указывающая, какая (внутренняя) операция исчерпала память. Обратите внимание, что из-за лежащей в основе архитектуры управления памятью (функция C `malloc()`) интерпретатор не всегда может полностью восстановиться после этой ситуации; тем не менее, он вызывает исключение, чтобы можно было вывести трассировку стека, если причиной была вышедшая из-под контроля программа.118119#### `exception NameError`120121Вызывается, когда не найдено локальное или глобальное имя. Это относится только к неквалифицированным именам. Связанное значение – сообщение об ошибке, которое включает имя, которое не удалось найти.122123#### `exception NotImplementedError`124125Это исключение является производным от [`RuntimeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.RuntimeError). В определённых пользователем базовых классах абстрактные методы должны возбуждать это исключение, когда они требуют, чтобы производные классы переопределили метод.126127Новое в версии 1.5.2.128129#### `exception OSError`130131Это исключение унаследовано от [`EnvironmentError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EnvironmentError). Оно возбуждается, когда функция возвращает системную ошибку (не для недопустимых типов аргументов или других incidental ошибок). Атрибут [`errno`](https://python-all.ru/2.7/library/errno.html#module-errno) – это числовой код ошибки из `errno`, а атрибут `strerror` – это соответствующая строка, которая была бы выведена функцией C `perror()`. См. модуль [`errno`](https://python-all.ru/2.7/library/errno.html#module-errno), который содержит имена кодов ошибок, определенных базовой операционной системой.132133Для исключений, связанных с путем файловой системы (таких как `chdir()` или `unlink()`), экземпляр исключения будет содержать третий атрибут, `filename`, который представляет собой имя файла, переданное функции.134135Новое в версии 1.5.2.136137#### `exception OverflowError`138139Возбуждается, когда результат арифметической операции слишком велик для представления. Это не может произойти для длинных целых чисел (которые скорее возбудят [`MemoryError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.MemoryError), чем сдадутся) и для большинства операций с обычными целыми числами, которые вместо этого возвращают длинное целое число. Из-за отсутствия стандартизации обработки исключений с плавающей запятой в C большинство операций с плавающей запятой также не проверяются.140141#### `exception ReferenceError`142143Это исключение возникает, когда прокси-объект слабой ссылки, созданный функцией [`weakref.proxy()`](https://python-all.ru/2.7/library/weakref.html#weakref.proxy), используется для доступа к атрибуту референта после его сборки мусора. Дополнительную информацию о слабых ссылках см. в модуле [`weakref`](https://python-all.ru/2.7/library/weakref.html#module-weakref).144145Новое в версии 2.2: Ранее было известно как исключение [`weakref.ReferenceError`](https://python-all.ru/2.7/library/weakref.html#weakref.ReferenceError).146147#### `exception RuntimeError`148149Возникает, когда обнаружена ошибка, не попадающая ни в одну из других категорий. Связанное значение – строка, указывающая, что именно пошло не так.150151#### `exception StopIteration`152153Возбуждается методом [`next()`](https://python-all.ru/2.7/library/stdtypes.html#iterator.next) [итератора](https://python-all.ru/2.7/glossary.html#term-iterator) для сигнализации об отсутствии дальнейших значений. Он унаследован от [`Exception`](https://python-all.ru/2.7/library/exceptions.html#exceptions.Exception) вместо [`StandardError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.StandardError), поскольку в нормальном применении это не считается ошибкой.154155Новое в версии 2.2.156157#### `exception SyntaxError`158159Возбуждается, когда парсер обнаруживает синтаксическую ошибку. Это может произойти в операторе [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import), в операторе [`exec`](https://python-all.ru/2.7/reference/simple_stmts.html#exec), при вызове встроенной функции [`eval()`](https://python-all.ru/2.7/library/functions.html#eval) или [`input()`](https://python-all.ru/2.7/library/functions.html#input), или при чтении начального скрипта или стандартного ввода (также в интерактивном режиме).160161Экземпляры этого класса имеют атрибуты `filename`, `lineno`, `offset` и `text` для упрощения доступа к подробностям. [`str()`](https://python-all.ru/2.7/library/functions.html#str) экземпляра исключения возвращает только сообщение.162163#### `exception IndentationError`164165Базовый класс для синтаксических ошибок, связанных с неверным отступом. Является подклассом [`SyntaxError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.SyntaxError).166167#### `exception TabError`168169Возбуждается, когда отступ содержит непоследовательное использование табуляции и пробелов. Является подклассом [`IndentationError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.IndentationError).170171#### `exception SystemError`172173Возникает, когда интерпретатор обнаруживает внутреннюю ошибку, но ситуация не настолько серьезна, чтобы заставить его отказаться от всех надежд. Связанное значение представляет собой строку, указывающую на то, что пошло не так (на низкоуровневом языке).174175Об этом следует сообщить автору или сопровождающему вашего интерпретатора Python. Обязательно укажите версию интерпретатора Python (`sys.version`; она также выводится в начале интерактивного сеанса Python), точное сообщение об ошибке (связанное значение исключения) и, если возможно, исходный код программы, вызвавшей ошибку.176177#### `exception SystemExit`178179Это исключение возбуждается функцией [`sys.exit()`](https://python-all.ru/2.7/library/sys.html#sys.exit). Если оно не обработано, интерпретатор Python завершает работу; трассировка стека не выводится. Если связанное значение является обычным целым числом, оно задает системный статус выхода (передается функции `exit()` в C); если это `None`, статус выхода равен нулю; если оно имеет другой тип (например, строку), значение объекта выводится, а статус выхода равен единице.180181Экземпляры имеют атрибут `code`, который устанавливается в предлагаемый статус выхода или сообщение об ошибке (по умолчанию `None`). Кроме того, это исключение напрямую наследуется от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException) и не от [`StandardError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.StandardError), поскольку это не является ошибкой технически.182183Вызов [`sys.exit()`](https://python-all.ru/2.7/library/sys.html#sys.exit) преобразуется в исключение, чтобы могли выполниться обработчики очистки (блоки [`finally`](https://python-all.ru/2.7/reference/compound_stmts.html#finally) операторов [`try`](https://python-all.ru/2.7/reference/compound_stmts.html#try)), а также чтобы отладчик мог выполнить скрипт без риска потерять управление. Функцию [`os._exit()`](https://python-all.ru/2.7/library/os.html#os._exit) можно использовать, если абсолютно необходимо выйти немедленно (например, в дочернем процессе после вызова [`os.fork()`](https://python-all.ru/2.7/library/os.html#os.fork)).184185Исключение наследуется от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException) вместо [`StandardError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.StandardError) или [`Exception`](https://python-all.ru/2.7/library/exceptions.html#exceptions.Exception), чтобы оно не было случайно перехвачено кодом, который перехватывает [`Exception`](https://python-all.ru/2.7/library/exceptions.html#exceptions.Exception). Это позволяет исключению правильно распространяться вверх и вызывает завершение работы интерпретатора.186187Изменено в версии 2.5: Изменено наследование от [`BaseException`](https://python-all.ru/2.7/library/exceptions.html#exceptions.BaseException).188189#### `exception TypeError`190191Вызывается, когда операция или функция применяется к объекту неподходящего типа. Связанное значение – строка с подробностями о несоответствии типов.192193#### `exception UnboundLocalError`194195Вызывается, когда осуществляется обращение к локальной переменной функции или метода, но этой переменной не присвоено значение. Является подклассом [`NameError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.NameError).196197Новое в версии 2.0.198199#### `exception UnicodeError`200201Вызывается при ошибке кодирования или декодирования, связанной с Unicode. Является подклассом [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError).202203[`UnicodeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.UnicodeError) имеет атрибуты, описывающие ошибку кодирования или декодирования. Например, `err.object[err.start:err.end]` содержит конкретные недопустимые входные данные, на которых споткнулся кодек.204205#### `encoding`206207Имя кодировки, вызвавшей ошибку.208209#### `reason`210211Строка, описывающая конкретную ошибку кодека.212213#### `object`214215Объект, который кодек пытался закодировать или декодировать.216217#### `start`218219Первый индекс недопустимых данных в [`object`](https://python-all.ru/2.7/library/functions.html#object).220221#### `end`222223Индекс, следующий за последними недопустимыми данными в [`object`](https://python-all.ru/2.7/library/functions.html#object).224225Новое в версии 2.0.226227#### `exception UnicodeEncodeError`228229Вызывается при ошибке, связанной с Unicode, во время кодирования. Является подклассом [`UnicodeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.UnicodeError).230231Новое в версии 2.3.232233#### `exception UnicodeDecodeError`234235Вызывается при ошибке, связанной с Unicode, во время декодирования. Является подклассом [`UnicodeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.UnicodeError).236237Новое в версии 2.3.238239#### `exception UnicodeTranslateError`240241Вызывается при ошибке, связанной с Unicode, во время трансляции. Является подклассом [`UnicodeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.UnicodeError).242243Новое в версии 2.3.244245#### `exception ValueError`246247Вызывается, когда операция или функция получает аргумент правильного типа, но с неподходящим значением, и ситуация не описывается более точным исключением, например [`IndexError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.IndexError).248249#### `exception VMSError`250251Доступно только в VMS. Возникает, когда происходит специфичная для VMS ошибка.252253#### `exception WindowsError`254255Возбуждается, когда происходит ошибка, специфичная для Windows, или когда номер ошибки не соответствует значению `errno`. Значения `winerror` и `strerror` создаются из возвращаемых значений функций `GetLastError()` и `FormatMessage()` из Windows Platform API. Значение [`errno`](https://python-all.ru/2.7/library/errno.html#module-errno) отображает значение `winerror` в соответствующие значения `errno.h`. Это подкласс [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError).256257Новое в версии 2.0.258259Изменено в версии 2.5: В предыдущих версиях коды `GetLastError()` помещались в [`errno`](https://python-all.ru/2.7/library/errno.html#module-errno).260261#### `exception ZeroDivisionError`262263Вызывается, когда второй аргумент операции деления или взятия остатка равен нулю. Связанное значение – строка, указывающая тип операндов и операцию.264265Следующие исключения используются как категории предупреждений; дополнительную информацию см. в модуле [`warnings`](https://python-all.ru/2.7/library/warnings.html#module-warnings) .266267#### `exception Warning`268269Базовый класс для категорий предупреждений.270271#### `exception UserWarning`272273Базовый класс для предупреждений, генерируемых пользовательским кодом.274275#### `exception DeprecationWarning`276277Базовый класс для предупреждений об устаревших возможностях.278279#### `exception PendingDeprecationWarning`280281Базовый класс для предупреждений о возможностях, которые будут признаны устаревшими в будущем.282283#### `exception SyntaxWarning`284285Базовый класс для предупреждений о сомнительном синтаксисе.286287#### `exception RuntimeWarning`288289Базовый класс для предупреждений о сомнительном поведении во время выполнения.290291#### `exception FutureWarning`292293Базовый класс для предупреждений о конструкциях, которые в будущем изменят семантику.294295#### `exception ImportWarning`296297Базовый класс для предупреждений о возможных ошибках при импорте модулей.298299Новое в версии 2.5.300301#### `exception UnicodeWarning`302303Базовый класс для предупреждений, связанных с Unicode.304305Новое в версии 2.5.306307#### `exception BytesWarning`308309Базовый класс для предупреждений, связанных с bytes и bytearray.310311Новое в версии 2.6.312313## 6.1. Иерархия исключений314315Иерархия классов для встроенных исключений:316317```python318BaseException319 +-- SystemExit320 +-- KeyboardInterrupt321 +-- GeneratorExit322 +-- Exception323 +-- StopIteration324 +-- StandardError325 | +-- BufferError326 | +-- ArithmeticError327 | | +-- FloatingPointError328 | | +-- OverflowError329 | | +-- ZeroDivisionError330 | +-- AssertionError331 | +-- AttributeError332 | +-- EnvironmentError333 | | +-- IOError334 | | +-- OSError335 | | +-- WindowsError (Windows)336 | | +-- VMSError (VMS)337 | +-- EOFError338 | +-- ImportError339 | +-- LookupError340 | | +-- IndexError341 | | +-- KeyError342 | +-- MemoryError343 | +-- NameError344 | | +-- UnboundLocalError345 | +-- ReferenceError346 | +-- RuntimeError347 | | +-- NotImplementedError348 | +-- SyntaxError349 | | +-- IndentationError350 | | +-- TabError351 | +-- SystemError352 | +-- TypeError353 | +-- ValueError354 | +-- UnicodeError355 | +-- UnicodeDecodeError356 | +-- UnicodeEncodeError357 | +-- UnicodeTranslateError358 +-- Warning359 +-- DeprecationWarning360 +-- PendingDeprecationWarning361 +-- RuntimeWarning362 +-- SyntaxWarning363 +-- UserWarning364 +-- FutureWarning365 +-- ImportWarning366 +-- UnicodeWarning367 +-- BytesWarning368```369