Exception Hierarchy
suggest changeException handling occurs based on an exception hierarchy, determined by the inheritance structure of the exception classes.
For example, IOError
and OSError
are both subclasses of EnvironmentError
. Code that catches an IOError
will not catch an OSError
. However, code that catches an EnvironmentError
will catch both IOError
s and OSError
s.
The hierarchy of built-in exceptions:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+– StopIteration +– StandardError | +– BufferError | +– ArithmeticError | | +– FloatingPointError | | +– OverflowError | | +– ZeroDivisionError | +– AssertionError | +– AttributeError | +– EnvironmentError | | +– IOError | | +– OSError | | +– WindowsError (Windows) | | +– VMSError (VMS) | +– EOFError | +– ImportError | +– LookupError | | +– IndexError | | +– KeyError | +– MemoryError | +– NameError | | +– UnboundLocalError | +– ReferenceError | +– RuntimeError | | +– NotImplementedError | +– SyntaxError | | +– IndentationError | | +– TabError | +– SystemError | +– TypeError | +– ValueError | +– UnicodeError | +– UnicodeDecodeError | +– UnicodeEncodeError | +– UnicodeTranslateError +– Warning +– DeprecationWarning +– PendingDeprecationWarning +– RuntimeWarning +– SyntaxWarning +– UserWarning +– FutureWarning +– ImportWarning +– UnicodeWarning +– BytesWarning
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
+– StopIteration +– StopAsyncIteration +– 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 | +– RecursionError +– SyntaxError | +– IndentationError | +– TabError +– SystemError +– TypeError +– ValueError | +– UnicodeError | +– UnicodeDecodeError | +– UnicodeEncodeError | +– UnicodeTranslateError +– Warning +– DeprecationWarning +– PendingDeprecationWarning +– RuntimeWarning +– SyntaxWarning +– UserWarning +– FutureWarning +– ImportWarning +– UnicodeWarning +– BytesWarning +– ResourceWarning