Встроенные исключения и когда они возникают
Рассмотрим иерархию встроенных в python исключений, хотя иногда вам могут встретиться и другие, так как программисты могут создавать собственные исключения.
Что значит иерархия? Это значит, что, если вы пытаетесь перехватить базовое исключение, то все дочерние тоже перехватятся.
О том, как обрабатываются исключения, статья здесь.
- BaseException - базовое исключение, от которого берут начало все остальные
- SystemExit - исключение, порождаемое функцией sys.exit при выходе из программы
- KeyboardInterrupt - порождается при прерывании программы пользователем (обычно сочетанием клавиш Ctrl+C)
- GeneratorExit - порождается при вызове метода close объекта generator
- Exception - а вот тут уже заканчиваются полностью системные
исключения (которые лучше не трогать) и начинаются обыкновенные, с
которыми можно работать
- ArithmeticError - арифметическая ошибка
- FloatingPointError - порождается при неудачном выполнении операции с плавающей запятой. На практике встречается нечасто
- OverflowError - возникает, когда результат арифметической операции слишком велик для представления. Не появляется при обычной работе с целыми числами (так как python поддерживает длинные числа), но может возникать в некоторых других случаях
- ZeroDivisionError - деление на ноль
- AssertionError - выражение в функции assert ложно
- AttributeError - объект не имеет данного атрибута (значения или метода)
- BufferError - операция, связанная с буфером, не может быть выполнена
- EOFError - функция наткнулась на конец файла и не смогла прочитать то, что хотела
- ImportError - не удалось импортирование модуля или его атрибута
- ModuleNotFoundError - не удалось найти файл модуля, либо ошибка при поиске пути к модулю
- LookupError - некорректный индекс или ключ
- IndexError - индекс не входит в диапазон элементов
- KeyError - несуществующий ключ (в словаре, множестве или другом объекте)
- MemoryError - недостаточно памяти
- NameError - не найдено переменной с таким именем
- UnboundLocalError - сделана ссылка на локальную переменную в функции, но переменная не определена ранее
- OSError - ошибка, связанная с системой
- BlockingIOError - операция блокирует объект (например, сокет), настроенный на неблокирующую работу
- ChildProcessError - неудача при операции с дочерним процессом
- ConnectionError - базовый класс для исключений, связанных с
подключениями
- BrokenPipeError - попытка записи в pipe, когда другой конец был закрыт, или попытка записи в сокет, который был закрыт для записи
- ConnectionAbortedError - попытка соединения прервана пиром
- ConnectionRefusedError - попытка соединения отклонена пиром
- ConnectionResetError - попытка соединения перезапущена пиром
- FileExistsError - попытка создания файла или директории, которая уже существует
- FileNotFoundError - файл или директория не существует
- InterruptedError - системный вызов прерван входящим сигналом
- IsADirectoryError - ожидался файл, но это директория
- NotADirectoryError - ожидалась директория, но это файл
- PermissionError - не хватает прав доступа
- ProcessLookupError - указанного процесса не существует
- TimeoutError - закончилось время ожидания
- ReferenceError - попытка доступа к атрибуту со слабой ссылкой
- RuntimeError - исключение не попадает ни под одну из других категорий
- RecursionError - достигнут лимит глубины рекурсии
- NotImplementedError - абстрактные методы класса требуют переопределения в дочерних классах
- StopIteration - порождается встроенной функцией next, если в итераторе больше нет элементов
- StopAsyncIteration - порождается методом __anext__(), если в асинхронном итераторе больше нет элементов
- SyntaxError - синтаксическая ошибка
- IndentationError - неправильные отступы
- TabError - смешивание в отступах табуляции и пробелов
- IndentationError - неправильные отступы
- SystemError - внутренняя ошибка
- TypeError - операция применена к объекту несоответствующего типа
- ValueError - функция получает аргумент правильного типа, но некорректного значения
- UnicodeError - ошибка, связанная с кодированием / декодированием
unicode в строках
- UnicodeEncodeError - исключение, связанное с кодированием unicode
- UnicodeDecodeError - исключение, связанное с декодированием unicode
- UnicodeTranslateError - исключение, связанное с переводом unicode
- ArithmeticError - арифметическая ошибка