Шаг 151.
Основы языка Python.
Обработка исключений. Классы встроенных исключений
На этом шаге мы остановимся на классах встроенных исключений.
Все встроенные исключения в языке Python представляют собой классы. Иерархия встроенных классов
исключений приведена ниже:
BaseException
SystemExit
KeyboardInterrupt
GeneratorExit
Exception
StopIteration
ArithmeticError
FloatingPointError, OverflowError, ZeroDivisionError
AssertionError
AttributeError
BufferError
EOFError
ImportError
LookupError
IndexError, KeyError
MemoryError
NameError
UnboundLocalError
OSError
BlockingIOError
ChildProcessError
ConnectionError
BrokenPipeError, ConnectionAbortedError, ConnectionRefusedError,
ConnectionResetError
FileExistsError
FileNotFoundError
InterruptedError
IsADirectoryError
NotADirectoryError
PermissionError
ProcessLookupError
TimeoutError
ReferenceError
RuntimeError
NotImplementedError
SyntaxError
IndentationError
TabError
SystemError
TypeError
VaiueError
UnicodeError
UnicodeDecodeError, UnicodeEncodeError
UnicodeTranslateError
Warning
BytesWarning, DeprecationWarning, FutureWarning, ImportWarning,
PendingDeprecationWarning, ResourceWarning, RuntimeWarning,
SyntaxWarning, UnicodeWarning, UserWarning
Основное преимущество использования классов для обработки исключений заключается в возможности указания
базового класса для перехвата всех исключений соответствующих классов-потомков. Например, для перехвата деления
на ноль мы использовали класс ZeroDivisionError. Если вместо этого класса указать базовый класс
ArithmeticError, будут перехватываться исключения классов FloatingPointError, OverflowError и
ZeroDivisionError. Пример:
try:
x = 1 / 0 # Ошибка: деление на 0
except ArithmeticError: # Указываем базовый класс
print("Обработали деление на 0")
Перечислим основные классы встроенных исключений:
- BaseExceptxon - является классом самого верхнего уровня и базовым для всех прочих
классов исключений;
- Exception - базовый класс для большинства встроенных в Python исключений. Именно
его, а не BaseException, необходимо наследовать при создании пользовательского класса
исключения;
- AssertionError - возбуждается инструкцией assert;
- AttributeError - попытка обращения к несуществующему атрибуту объекта;
- EOFError - возбуждается функцией input () при достижении конца файла;
- ImportError - невозможно импортировать модуль или пакет;
- IndentationError - неправильно расставлены отступы в программе;
- IndexError - указанный индекс не существует в последовательности;
- KeyError - указанный ключ не существует в словаре;
- Keyboardinterrupt - нажата комбинация клавиш Ctrl+C;
- MemoryError - интерпретатору существенно не хватает оперативной памяти;
- NameError - попытка обращения к идентификатору до его определения;
- NotImplementedError - должно возбуждаться в абстрактных методах;
- OSError - базовый класс для всех исключений, возбуждаемых в ответ на возникновение ошибок в операционной системе (отсутствие запрошенного файла, недостаток места на диске и пр.);
- Overf lowError - число, получившееся в результате выполнения арифметической операции, слишком велико, чтобы Python смог его обработать;
- RuntimeError - неклассифицированная ошибка времени выполнения;
- StopIteration - возбуждается методом __next__() как сигнал об окончании итераций;
- SyntaxError - синтаксическая ошибка;
- SystemError - ошибка в самой программе интерпретатора Python;
- TabError - в исходном коде программы встретился символ табуляции, использование которого для создания отступов недопустимо;
- TypeError - тип объекта не соответствует ожидаемому;
- UnboundLocalError - внутри функции переменной присваивается значение после обращения к одноименной глобальной переменной;
- UnicodeDecodeError - ошибка преобразования последовательности байтов в строку;
- UnicodeEncodeError - ошибка преобразования строки в последовательность байтов;
- UnicodeTranslationError - ошибка преобразования строки в другую кодировку;
- ValueError - переданный параметр не соответствует ожидаемому значению;
- ZeroDivisionError - попытка деления на ноль.
На следующем шаге мы рассмотрим пользовательские исключения.
Предыдущий шаг
Содержание
Следующий шаг