На этом шаге мы остановимся на классах встроенных исключений.
Все встроенные исключения в языке 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")
Перечислим основные классы встроенных исключений:
На следующем шаге мы рассмотрим пользовательские исключения.