exceptions.md
1> **Источник:** https://python-all.ru/3.5/library/exceptions.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 5. Встроенные исключения89В Python все исключения должны быть экземплярами класса, производного от [`BaseException`](https://python-all.ru/3.5/library/exceptions.html#BaseException). В операторе [`try`](https://python-all.ru/3.5/reference/compound_stmts.html#try) с предложением [`except`](https://python-all.ru/3.5/reference/compound_stmts.html#except), в котором указан конкретный класс, это предложение также обрабатывает любые классы исключений, производные от этого класса (но не классы исключений, от которых *он* сам является производным). Два класса исключений, не связанных через наследование, никогда не эквивалентны, даже если они имеют одинаковые имена.1011Перечисленные ниже встроенные исключения могут быть созданы интерпретатором или встроенными функциями. За исключением особо оговоренных случаев, они имеют «связанное значение», указывающее на детальную причину ошибки. Это может быть строка или кортеж из нескольких элементов информации (например, код ошибки и строка, поясняющая код). Связанное значение обычно передаётся в качестве аргументов конструктору класса исключения.1213Пользовательский код может возбуждать встроенные исключения. Это можно использовать для проверки обработчика исключений или для сообщения об ошибке «точно так же», как если бы интерпретатор возбудил то же самое исключение; однако следует помнить, что ничто не мешает пользовательскому коду возбудить неподходящую ошибку.1415Встроенные классы исключений могут быть подклассифицированы для определения новых исключений; программистам рекомендуется наследовать новые исключения от класса [`Exception`](https://python-all.ru/3.5/library/exceptions.html#Exception) или одного из его подклассов, а не от [`BaseException`](https://python-all.ru/3.5/library/exceptions.html#BaseException). Дополнительная информация об определении исключений доступна в Python Tutorial в разделе [Пользовательские исключения](https://python-all.ru/3.5/tutorial/errors.html#tut-userexceptions).1617При возбуждении (или повторном возбуждении) исключения в предложении [`except`](https://python-all.ru/3.5/reference/compound_stmts.html#except) или [`finally`](https://python-all.ru/3.5/reference/compound_stmts.html#finally) `__context__` автоматически устанавливается в последнее перехваченное исключение; если новое исключение не обработано, трассировка, отображаемая в конечном итоге, будет содержать исходное исключение(я) и конечное исключение.1819При возбуждении нового исключения (вместо использования пустого `raise` для повторного возбуждения обрабатываемого в данный момент исключения) неявный контекст исключения может быть дополнен явной причиной с помощью [`from`](https://python-all.ru/3.5/reference/simple_stmts.html#from) с [`raise`](https://python-all.ru/3.5/reference/simple_stmts.html#raise):2021```python22raise new_exc from original_exc23```2425Выражение после [`from`](https://python-all.ru/3.5/reference/simple_stmts.html#from) должно быть исключением или `None`. Оно будет установлено как `__cause__` для возбуждённого исключения. Установка `__cause__` также неявно устанавливает атрибут `__suppress_context__` в `True`, так что использование `raise new_exc from None` фактически заменяет старое исключение новым для целей отображения (например, преобразуя [`KeyError`](https://python-all.ru/3.5/library/exceptions.html#KeyError) в [`AttributeError`](https://python-all.ru/3.5/library/exceptions.html#AttributeError), оставляя старое исключение доступным в `__context__` для интроспекции при отладке).2627Код отображения стандартной трассировки показывает эти цепочки исключений в дополнение к трассировке самого исключения. Явно связанное исключение в `__cause__` всегда показывается, если присутствует. Неявно связанное исключение в `__context__` показывается только если `__cause__` равно [`None`](https://python-all.ru/3.5/library/constants.html#None) и `__suppress_context__` равно false.2829В любом случае, само исключение всегда показывается после любых связанных исключений, так что последняя строка трассировки всегда показывает последнее возбуждённое исключение.3031## 5.1. Базовые классы3233Следующие исключения в основном используются как базовые классы для других исключений.3435#### `exception BaseException`3637Базовый класс для всех встроенных исключений. Он не предназначен для прямого наследования пользовательскими классами (для этого используйте [`Exception`](https://python-all.ru/3.5/library/exceptions.html#Exception)). Если для экземпляра этого класса вызвать [`str()`](https://python-all.ru/3.5/library/stdtypes.html#str), возвращается строковое представление аргумента(ов) экземпляра, или пустая строка, если аргументов не было.3839#### `args`4041Кортеж аргументов, переданных конструктору исключения. Некоторые встроенные исключения (например, [`OSError`](https://python-all.ru/3.5/library/exceptions.html#OSError)) ожидают определённое количество аргументов и присваивают элементам этого кортежа специальное значение, в то время как другие обычно вызываются только с одной строкой, содержащей сообщение об ошибке.4243#### `with_traceback(tb)`4445Этот метод устанавливает *tb* в качестве новой трассировки для исключения и возвращает объект исключения. Обычно используется в коде обработки исключений, например:4647```python48try:49 ...50except SomeException:51 tb = sys.exc_info()[2]52 raise OtherException(...).with_traceback(tb)53```5455#### `exception Exception`5657Все встроенные исключения, не приводящие к завершению системы, являются производными от этого класса. Все определённые пользователем исключения также должны наследоваться от этого класса.5859#### `exception ArithmeticError`6061Базовый класс для встроенных исключений, которые возбуждаются при различных арифметических ошибках: [`OverflowError`](https://python-all.ru/3.5/library/exceptions.html#OverflowError), [`ZeroDivisionError`](https://python-all.ru/3.5/library/exceptions.html#ZeroDivisionError), [`FloatingPointError`](https://python-all.ru/3.5/library/exceptions.html#FloatingPointError).6263#### `exception BufferError`6465Возбуждается, когда не может быть выполнена операция, связанная с [буфером](https://python-all.ru/3.5/c-api/buffer.html#bufferobjects).6667#### `exception LookupError`6869Базовый класс для исключений, возбуждаемых, когда ключ или индекс, используемые в отображении или последовательности, недействительны: [`IndexError`](https://python-all.ru/3.5/library/exceptions.html#IndexError), [`KeyError`](https://python-all.ru/3.5/library/exceptions.html#KeyError). Оно может быть возбуждено напрямую с помощью [`codecs.lookup()`](https://python-all.ru/3.5/library/codecs.html#codecs.lookup).7071## 5.2. Конкретные исключения7273Обычно возбуждаются следующие исключения.7475#### `exception AssertionError`7677Возбуждается, когда оператор [`assert`](https://python-all.ru/3.5/reference/simple_stmts.html#assert) завершается неудачно.7879#### `exception AttributeError`8081Возбуждается при неудачном обращении к атрибуту (см. [Обращения к атрибутам](https://python-all.ru/3.5/reference/expressions.html#attribute-references)) или присваивании. (Если объект вообще не поддерживает обращения к атрибутам или их присваивание, возбуждается [`TypeError`](https://python-all.ru/3.5/library/exceptions.html#TypeError).)8283#### `exception EOFError`8485Возникает, когда функция [`input()`](https://python-all.ru/3.5/library/functions.html#input) достигает конца файла (EOF), не прочитав ни одного байта. (Прим.: методы `io.IOBase.read()` и [`io.IOBase.readline()`](https://python-all.ru/3.5/library/io.html#io.IOBase.readline) возвращают пустую строку при достижении EOF.)8687#### `exception FloatingPointError`8889Возникает при ошибке операции с плавающей запятой. Это исключение всегда определено, но может быть вызвано только при сборке Python с опцией `--with-fpectl`, или если символ `WANT_SIGFPE_HANDLER` определён в файле `pyconfig.h`.9091#### `exception GeneratorExit`9293Возбуждается при закрытии [генератора](https://python-all.ru/3.5/glossary.html#term-generator) или [корутины](https://python-all.ru/3.5/glossary.html#term-coroutine); см. [`generator.close()`](https://python-all.ru/3.5/reference/expressions.html#generator.close) и [`coroutine.close()`](https://python-all.ru/3.5/reference/datamodel.html#coroutine.close). Это исключение напрямую наследуется от [`BaseException`](https://python-all.ru/3.5/library/exceptions.html#BaseException), а не от [`Exception`](https://python-all.ru/3.5/library/exceptions.html#Exception), поскольку технически не является ошибкой.9495#### `exception ImportError`9697Возбуждается, когда оператор [`import`](https://python-all.ru/3.5/reference/simple_stmts.html#import) не может найти определение модуля или когда `from ... import` не может найти имя, которое нужно импортировать.9899Атрибуты `name` и `path` можно задать с помощью аргументов, передаваемых только по ключевому слову конструктору. После установки они представляют имя модуля, который пытались импортировать, и путь к файлу, вызвавшему исключение, соответственно.100101Изменено в версии 3.3: Добавлены атрибуты `name` и `path`.102103#### `exception IndexError`104105Вызывается, когда индекс последовательности выходит за диапазон. (Индексы среза молча обрезаются, чтобы попасть в допустимый диапазон; если индекс не является целым числом, вызывается [`TypeError`](https://python-all.ru/3.5/library/exceptions.html#TypeError).)106107#### `exception KeyError`108109Вызывается, когда ключ отображения (словаря) не найден среди существующих ключей.110111#### `exception KeyboardInterrupt`112113Возникает, когда пользователь нажимает клавишу прерывания (обычно `Control-C` или `Delete`). Во время выполнения регулярно проверяется наличие прерывания. Исключение наследуется от [`BaseException`](https://python-all.ru/3.5/library/exceptions.html#BaseException), чтобы его случайно не перехватил код, который ловит [`Exception`](https://python-all.ru/3.5/library/exceptions.html#Exception), и тем самым не заблокировал завершение интерпретатора.114115#### `exception MemoryError`116117Вызывается, когда операция исчерпывает память, но ситуацию ещё можно исправить (удалив некоторые объекты). Связанное значение – строка, указывающая, какая (внутренняя) операция исчерпала память. Обратите внимание, что из-за лежащей в основе архитектуры управления памятью (функция C `malloc()`) интерпретатор не всегда может полностью восстановиться после этой ситуации; тем не менее, он вызывает исключение, чтобы можно было вывести трассировку стека, если причиной была вышедшая из-под контроля программа.118119#### `exception NameError`120121Вызывается, когда не найдено локальное или глобальное имя. Это относится только к неквалифицированным именам. Связанное значение – сообщение об ошибке, которое включает имя, которое не удалось найти.122123#### `exception NotImplementedError`124125Это исключение является производным от [`RuntimeError`](https://python-all.ru/3.5/library/exceptions.html#RuntimeError). В определённых пользователем базовых классах абстрактные методы должны возбуждать это исключение, когда они требуют, чтобы производные классы переопределили метод.126127#### `exception OSError([arg])`128129#### `exception OSError(errno, strerror[, filename[, winerror[, filename2]]])`130131Это исключение вызывается, когда системная функция возвращает системную ошибку, включая ошибки ввода-вывода, такие как «файл не найден» или «диск заполнен» (не для недопустимых типов аргументов или других случайных ошибок).132133Вторая форма конструктора устанавливает соответствующие атрибуты, описанные ниже. Атрибуты по умолчанию равны [`None`](https://python-all.ru/3.5/library/constants.html#None), если не указаны. Для обратной совместимости, если передано три аргумента, атрибут [`args`](https://python-all.ru/3.5/library/exceptions.html#BaseException.args) содержит только кортеж из двух элементов из первых двух аргументов конструктора.134135Конструктор часто фактически возвращает подкласс [`OSError`](https://python-all.ru/3.5/library/exceptions.html#OSError), как описано в [Исключения ОС](https://python-all.ru/3.5/library/exceptions.html#os-exceptions) ниже. Конкретный подкласс зависит от конечного значения [`errno`](https://python-all.ru/3.5/library/exceptions.html#OSError.errno). Это поведение происходит только при конструировании [`OSError`](https://python-all.ru/3.5/library/exceptions.html#OSError) напрямую или через псевдоним и не наследуется при создании подклассов.136137#### `errno`138139Числовой код ошибки из переменной C `errno`.140141#### `winerror`142143В Windows это возвращает собственный код ошибки Windows. Атрибут [`errno`](https://python-all.ru/3.5/library/exceptions.html#OSError.errno) является приблизительным переводом этого кода в терминах POSIX.144145В Windows, если аргумент конструктора *winerror* является целым числом, атрибут [`errno`](https://python-all.ru/3.5/library/exceptions.html#OSError.errno) определяется из кода ошибки Windows, а аргумент *errno* игнорируется. На других платформах аргумент *winerror* игнорируется, а атрибут [`winerror`](https://python-all.ru/3.5/library/exceptions.html#OSError.winerror) не существует.146147#### `strerror`148149Соответствующее сообщение об ошибке, предоставляемое операционной системой. Оно форматируется C-функциями `perror()` в POSIX и `FormatMessage()` в Windows.150151#### `filename`152153#### `filename2`154155Для исключений, связанных с путём файловой системы (например, [`open()`](https://python-all.ru/3.5/library/functions.html#open) или [`os.unlink()`](https://python-all.ru/3.5/library/os.html#os.unlink)), [`filename`](https://python-all.ru/3.5/library/exceptions.html#OSError.filename) – это имя файла, переданное функции. Для функций, работающих с двумя путями (например, [`os.rename()`](https://python-all.ru/3.5/library/os.html#os.rename)), [`filename2`](https://python-all.ru/3.5/library/exceptions.html#OSError.filename2) соответствует второму имени файла, переданному функции.156157Изменено в версии 3.3: [`EnvironmentError`](https://python-all.ru/3.5/library/exceptions.html#EnvironmentError), [`IOError`](https://python-all.ru/3.5/library/exceptions.html#IOError), [`WindowsError`](https://python-all.ru/3.5/library/exceptions.html#WindowsError), [`socket.error`](https://python-all.ru/3.5/library/socket.html#socket.error), [`select.error`](https://python-all.ru/3.5/library/select.html#select.error) и `mmap.error` были объединены в [`OSError`](https://python-all.ru/3.5/library/exceptions.html#OSError), и конструктор может возвращать подкласс.158159Изменено в версии 3.4: Атрибут [`filename`](https://python-all.ru/3.5/library/exceptions.html#OSError.filename) теперь содержит исходное имя файла, переданное функции, а не имя, закодированное или декодированное из кодировки файловой системы. Кроме того, был добавлен аргумент конструктора и атрибут *filename2*.160161#### `exception OverflowError`162163Возникает, когда результат арифметической операции слишком велик для представления. Для целых чисел это невозможно (они скорее вызовут [`MemoryError`](https://python-all.ru/3.5/library/exceptions.html#MemoryError), чем сдадутся). Однако по историческим причинам OverflowError иногда возникает и для целых чисел, выходящих за требуемый диапазон. Из-за отсутствия стандартизации обработки исключений чисел с плавающей запятой в C, большинство операций с плавающей запятой не проверяются.164165#### `exception RecursionError`166167Это исключение является производным от [`RuntimeError`](https://python-all.ru/3.5/library/exceptions.html#RuntimeError). Возникает, когда интерпретатор обнаруживает, что превышена максимальная глубина рекурсии (см. [`sys.getrecursionlimit()`](https://python-all.ru/3.5/library/sys.html#sys.getrecursionlimit)).168169Новое в версии 3.5: Раньше вызывалось простое [`RuntimeError`](https://python-all.ru/3.5/library/exceptions.html#RuntimeError).170171#### `exception ReferenceError`172173Это исключение возникает, когда прокси-объект слабой ссылки, созданный функцией [`weakref.proxy()`](https://python-all.ru/3.5/library/weakref.html#weakref.proxy), используется для доступа к атрибуту референта после его сборки мусора. Дополнительную информацию о слабых ссылках см. в модуле [`weakref`](https://python-all.ru/3.5/library/weakref.html#module-weakref).174175#### `exception RuntimeError`176177Возникает, когда обнаружена ошибка, не попадающая ни в одну из других категорий. Связанное значение – строка, указывающая, что именно пошло не так.178179#### `exception StopIteration`180181Вызывается встроенной функцией [`next()`](https://python-all.ru/3.5/library/functions.html#next) и методом [итератора](https://python-all.ru/3.5/glossary.html#term-iterator) [`__next__()`](https://python-all.ru/3.5/library/stdtypes.html#iterator.__next__), чтобы сообщить, что итератор больше не выдаёт элементы.182183Объект исключения имеет единственный атрибут `value`, который передаётся в качестве аргумента при создании исключения и по умолчанию равен [`None`](https://python-all.ru/3.5/library/constants.html#None).184185Когда [генератор](https://python-all.ru/3.5/glossary.html#term-generator) или [корутина](https://python-all.ru/3.5/glossary.html#term-coroutine) возвращает, возбуждается новый экземпляр [`StopIteration`](https://python-all.ru/3.5/library/exceptions.html#StopIteration), и возвращённое функцией значение используется как параметр `value` конструктора исключения.186187Если функция-генератор, определённая при наличии директивы `from __future__ import generator_stop`, возбуждает [`StopIteration`](https://python-all.ru/3.5/library/exceptions.html#StopIteration), она будет преобразована в [`RuntimeError`](https://python-all.ru/3.5/library/exceptions.html#RuntimeError) (с сохранением [`StopIteration`](https://python-all.ru/3.5/library/exceptions.html#StopIteration) в качестве причины нового исключения).188189Изменено в версии 3.3: Добавлен атрибут `value` и возможность для функций-генераторов использовать его для возврата значения.190191Изменено в версии 3.5: Введено преобразование в RuntimeError.192193#### `exception StopAsyncIteration`194195Должно быть возбуждено методом [`__anext__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__anext__) объекта [асинхронный итератор](https://python-all.ru/3.5/glossary.html#term-asynchronous-iterator), чтобы остановить итерацию.196197Новое в версии 3.5.198199#### `exception SyntaxError`200201Возбуждается, когда синтаксический анализатор обнаруживает синтаксическую ошибку. Это может произойти в операторе [`import`](https://python-all.ru/3.5/reference/simple_stmts.html#import), при вызове встроенных функций [`exec()`](https://python-all.ru/3.5/library/functions.html#exec) или [`eval()`](https://python-all.ru/3.5/library/functions.html#eval), или при чтении исходного скрипта или стандартного ввода (также в интерактивном режиме).202203Экземпляры этого класса имеют атрибуты `filename`, `lineno`, `offset` и `text` для упрощения доступа к подробностям. [`str()`](https://python-all.ru/3.5/library/stdtypes.html#str) экземпляра исключения возвращает только сообщение.204205#### `exception IndentationError`206207Базовый класс для синтаксических ошибок, связанных с неверным отступом. Является подклассом [`SyntaxError`](https://python-all.ru/3.5/library/exceptions.html#SyntaxError).208209#### `exception TabError`210211Возбуждается, когда отступ содержит непоследовательное использование табуляции и пробелов. Является подклассом [`IndentationError`](https://python-all.ru/3.5/library/exceptions.html#IndentationError).212213#### `exception SystemError`214215Возникает, когда интерпретатор обнаруживает внутреннюю ошибку, но ситуация не настолько серьезна, чтобы заставить его отказаться от всех надежд. Связанное значение представляет собой строку, указывающую на то, что пошло не так (на низкоуровневом языке).216217Об этом следует сообщить автору или сопровождающему вашего интерпретатора Python. Обязательно укажите версию интерпретатора Python (`sys.version`; она также выводится в начале интерактивного сеанса Python), точное сообщение об ошибке (связанное значение исключения) и, если возможно, исходный код программы, вызвавшей ошибку.218219#### `exception SystemExit`220221Это исключение возбуждается функцией [`sys.exit()`](https://python-all.ru/3.5/library/sys.html#sys.exit). Оно наследуется от [`BaseException`](https://python-all.ru/3.5/library/exceptions.html#BaseException), а не от [`Exception`](https://python-all.ru/3.5/library/exceptions.html#Exception), чтобы его случайно не перехватил код, который перехватывает [`Exception`](https://python-all.ru/3.5/library/exceptions.html#Exception). Это позволяет исключению правильно всплыть и вызвать завершение интерпретатора. Если оно не обработано, интерпретатор Python завершается; стек вызовов не выводится. Конструктор принимает тот же необязательный аргумент, что и [`sys.exit()`](https://python-all.ru/3.5/library/sys.html#sys.exit). Если значение – целое число, оно задаёт статус выхода системы (передаётся функции `exit()` в C); если это `None`, статус выхода равен нулю; если имеет другой тип (например, строку), значение объекта выводится, а статус выхода равен единице.222223Вызов [`sys.exit()`](https://python-all.ru/3.5/library/sys.html#sys.exit) преобразуется в исключение, чтобы могли выполниться обработчики очистки (блоки [`finally`](https://python-all.ru/3.5/reference/compound_stmts.html#finally) операторов [`try`](https://python-all.ru/3.5/reference/compound_stmts.html#try)), а также чтобы отладчик мог выполнить скрипт без риска потерять управление. Функцию [`os._exit()`](https://python-all.ru/3.5/library/os.html#os._exit) можно использовать, если абсолютно необходимо выйти немедленно (например, в дочернем процессе после вызова [`os.fork()`](https://python-all.ru/3.5/library/os.html#os.fork)).224225#### `code`226227Код возврата или сообщение об ошибке, передаваемые в конструктор. (По умолчанию `None`.)228229#### `exception TypeError`230231Вызывается, когда операция или функция применяется к объекту неподходящего типа. Связанное значение – строка с подробностями о несоответствии типов.232233#### `exception UnboundLocalError`234235Вызывается, когда осуществляется обращение к локальной переменной функции или метода, но этой переменной не присвоено значение. Является подклассом [`NameError`](https://python-all.ru/3.5/library/exceptions.html#NameError).236237#### `exception UnicodeError`238239Вызывается при ошибке кодирования или декодирования, связанной с Unicode. Является подклассом [`ValueError`](https://python-all.ru/3.5/library/exceptions.html#ValueError).240241[`UnicodeError`](https://python-all.ru/3.5/library/exceptions.html#UnicodeError) имеет атрибуты, описывающие ошибку кодирования или декодирования. Например, `err.object[err.start:err.end]` содержит конкретные недопустимые входные данные, на которых споткнулся кодек.242243#### `encoding`244245Имя кодировки, вызвавшей ошибку.246247#### `reason`248249Строка, описывающая конкретную ошибку кодека.250251#### `object`252253Объект, который кодек пытался закодировать или декодировать.254255#### `start`256257Первый индекс недопустимых данных в [`object`](https://python-all.ru/3.5/library/functions.html#object).258259#### `end`260261Индекс, следующий за последними недопустимыми данными в [`object`](https://python-all.ru/3.5/library/functions.html#object).262263#### `exception UnicodeEncodeError`264265Вызывается при ошибке, связанной с Unicode, во время кодирования. Является подклассом [`UnicodeError`](https://python-all.ru/3.5/library/exceptions.html#UnicodeError).266267#### `exception UnicodeDecodeError`268269Вызывается при ошибке, связанной с Unicode, во время декодирования. Является подклассом [`UnicodeError`](https://python-all.ru/3.5/library/exceptions.html#UnicodeError).270271#### `exception UnicodeTranslateError`272273Вызывается при ошибке, связанной с Unicode, во время трансляции. Является подклассом [`UnicodeError`](https://python-all.ru/3.5/library/exceptions.html#UnicodeError).274275#### `exception ValueError`276277Возбуждается, когда встроенная операция или функция получает аргумент, который имеет правильный тип, но неподходящее значение, и ситуация не описывается более точным исключением, например [`IndexError`](https://python-all.ru/3.5/library/exceptions.html#IndexError).278279#### `exception ZeroDivisionError`280281Вызывается, когда второй аргумент операции деления или взятия остатка равен нулю. Связанное значение – строка, указывающая тип операндов и операцию.282283Следующие исключения сохранены для совместимости с предыдущими версиями; начиная с Python 3.3, они являются псевдонимами [`OSError`](https://python-all.ru/3.5/library/exceptions.html#OSError).284285#### `exception EnvironmentError`286287#### `exception IOError`288289#### `exception WindowsError`290291Доступно только в Windows.292293### 5.2.1. Исключения ОС294295Следующие исключения являются подклассами [`OSError`](https://python-all.ru/3.5/library/exceptions.html#OSError); они возбуждаются в зависимости от кода системной ошибки.296297#### `exception BlockingIOError`298299Возбуждается, когда операция заблокировалась бы на объекте (например, сокете), настроенном на неблокирующий режим. Соответствует `errno` `EAGAIN`, `EALREADY`, `EWOULDBLOCK` и `EINPROGRESS`.300301В дополнение к атрибутам [`OSError`](https://python-all.ru/3.5/library/exceptions.html#OSError), [`BlockingIOError`](https://python-all.ru/3.5/library/exceptions.html#BlockingIOError) может иметь ещё один атрибут:302303#### `characters_written`304305Целое число, содержащее количество символов, записанных в поток до блокировки. Этот атрибут доступен при использовании классов буферизованного ввода-вывода из модуля [`io`](https://python-all.ru/3.5/library/io.html#module-io).306307#### `exception ChildProcessError`308309Возбуждается, когда операция над дочерним процессом завершилась ошибкой. Соответствует `errno` `ECHILD`.310311#### `exception ConnectionError`312313Базовый класс для проблем, связанных с соединением.314315Подклассами являются [`BrokenPipeError`](https://python-all.ru/3.5/library/exceptions.html#BrokenPipeError), [`ConnectionAbortedError`](https://python-all.ru/3.5/library/exceptions.html#ConnectionAbortedError), [`ConnectionRefusedError`](https://python-all.ru/3.5/library/exceptions.html#ConnectionRefusedError) и [`ConnectionResetError`](https://python-all.ru/3.5/library/exceptions.html#ConnectionResetError).316317#### `exception BrokenPipeError`318319Подкласс [`ConnectionError`](https://python-all.ru/3.5/library/exceptions.html#ConnectionError), возбуждается при попытке записи в канал, когда другой его конец закрыт, или при попытке записи в сокет, который был закрыт для записи. Соответствует `errno` `EPIPE` и `ESHUTDOWN`.320321#### `exception ConnectionAbortedError`322323Подкласс [`ConnectionError`](https://python-all.ru/3.5/library/exceptions.html#ConnectionError), возбуждается, когда попытка соединения прервана удалённой стороной. Соответствует `errno` `ECONNABORTED`.324325#### `exception ConnectionRefusedError`326327Подкласс [`ConnectionError`](https://python-all.ru/3.5/library/exceptions.html#ConnectionError), возбуждается, когда попытка соединения отклонена удалённой стороной. Соответствует `errno` `ECONNREFUSED`.328329#### `exception ConnectionResetError`330331Подкласс [`ConnectionError`](https://python-all.ru/3.5/library/exceptions.html#ConnectionError), возбуждается, когда соединение сброшено удалённой стороной. Соответствует `errno` `ECONNRESET`.332333#### `exception FileExistsError`334335Возбуждается при попытке создать файл или каталог, который уже существует. Соответствует `errno` `EEXIST`.336337#### `exception FileNotFoundError`338339Возбуждается, когда запрашивается файл или каталог, который не существует. Соответствует `errno` `ENOENT`.340341#### `exception InterruptedError`342343Возбуждается, когда системный вызов прерывается входящим сигналом. Соответствует `errno` [`EINTR`](https://python-all.ru/3.5/library/errno.html#errno.EINTR).344345Изменено в версии 3.5: Теперь Python повторяет системные вызовы, когда системный вызов прерывается сигналом, за исключением случая, когда обработчик сигнала возбуждает исключение (см. [**PEP 475**](https://python-all.ru/3.5/library/exceptions.html) для обоснования), вместо возбуждения [`InterruptedError`](https://python-all.ru/3.5/library/exceptions.html#InterruptedError).346347#### `exception IsADirectoryError`348349Возбуждается, когда файловая операция (например, [`os.remove()`](https://python-all.ru/3.5/library/os.html#os.remove)) запрашивается для каталога. Соответствует `errno` `EISDIR`.350351#### `exception NotADirectoryError`352353Возбуждается, когда операция с каталогом (например, [`os.listdir()`](https://python-all.ru/3.5/library/os.html#os.listdir)) запрашивается для объекта, который не является каталогом. Соответствует `errno` `ENOTDIR`.354355#### `exception PermissionError`356357Возникает при попытке выполнить операцию без достаточных прав доступа – например, прав файловой системы. Соответствует `errno`, `EACCES` и `EPERM`.358359#### `exception ProcessLookupError`360361Возбуждается, когда указанный процесс не существует. Соответствует `errno` `ESRCH`.362363#### `exception TimeoutError`364365Возбуждается, когда системная функция превысила время ожидания на уровне системы. Соответствует `errno` `ETIMEDOUT`.366367Новое в версии 3.3: Все вышеуказанные подклассы [`OSError`](https://python-all.ru/3.5/library/exceptions.html#OSError) были добавлены.368369> **См. также**370>371> [**PEP 3151**](https://python-all.ru/3.5/library/exceptions.html) – Переработка иерархии исключений ОС и ввода-вывода372373## 5.3. Предупреждения374375Следующие исключения используются как категории предупреждений; дополнительную информацию см. в модуле [`warnings`](https://python-all.ru/3.5/library/warnings.html#module-warnings) .376377#### `exception Warning`378379Базовый класс для категорий предупреждений.380381#### `exception UserWarning`382383Базовый класс для предупреждений, генерируемых пользовательским кодом.384385#### `exception DeprecationWarning`386387Базовый класс для предупреждений об устаревших возможностях.388389#### `exception PendingDeprecationWarning`390391Базовый класс для предупреждений о возможностях, которые будут признаны устаревшими в будущем.392393#### `exception SyntaxWarning`394395Базовый класс для предупреждений о сомнительном синтаксисе.396397#### `exception RuntimeWarning`398399Базовый класс для предупреждений о сомнительном поведении во время выполнения.400401#### `exception FutureWarning`402403Базовый класс для предупреждений о конструкциях, которые в будущем изменят семантику.404405#### `exception ImportWarning`406407Базовый класс для предупреждений о возможных ошибках при импорте модулей.408409#### `exception UnicodeWarning`410411Базовый класс для предупреждений, связанных с Unicode.412413#### `exception BytesWarning`414415Базовый класс для предупреждений, связанных с [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes) и [`bytearray`](https://python-all.ru/3.5/library/functions.html#bytearray).416417#### `exception ResourceWarning`418419Базовый класс для предупреждений, связанных с использованием ресурсов.420421Новое в версии 3.2.422423## 5.4. Иерархия исключений424425Иерархия классов для встроенных исключений:426427```python428BaseException429 +-- SystemExit430 +-- KeyboardInterrupt431 +-- GeneratorExit432 +-- Exception433 +-- StopIteration434 +-- StopAsyncIteration435 +-- ArithmeticError436 | +-- FloatingPointError437 | +-- OverflowError438 | +-- ZeroDivisionError439 +-- AssertionError440 +-- AttributeError441 +-- BufferError442 +-- EOFError443 +-- ImportError444 +-- LookupError445 | +-- IndexError446 | +-- KeyError447 +-- MemoryError448 +-- NameError449 | +-- UnboundLocalError450 +-- OSError451 | +-- BlockingIOError452 | +-- ChildProcessError453 | +-- ConnectionError454 | | +-- BrokenPipeError455 | | +-- ConnectionAbortedError456 | | +-- ConnectionRefusedError457 | | +-- ConnectionResetError458 | +-- FileExistsError459 | +-- FileNotFoundError460 | +-- InterruptedError461 | +-- IsADirectoryError462 | +-- NotADirectoryError463 | +-- PermissionError464 | +-- ProcessLookupError465 | +-- TimeoutError466 +-- ReferenceError467 +-- RuntimeError468 | +-- NotImplementedError469 | +-- RecursionError470 +-- SyntaxError471 | +-- IndentationError472 | +-- TabError473 +-- SystemError474 +-- TypeError475 +-- ValueError476 | +-- UnicodeError477 | +-- UnicodeDecodeError478 | +-- UnicodeEncodeError479 | +-- UnicodeTranslateError480 +-- Warning481 +-- DeprecationWarning482 +-- PendingDeprecationWarning483 +-- RuntimeWarning484 +-- SyntaxWarning485 +-- UserWarning486 +-- FutureWarning487 +-- ImportWarning488 +-- UnicodeWarning489 +-- BytesWarning490 +-- ResourceWarning491```492