""" get a hierarchy of all predefined exceptions """
def class_hierarchy(class_, space=0):
print(space * ' ' + class_.__name__)
if not class_ is type:
for subclass in class_.__subclasses__():
class_hierarchy(subclass, space + 4)
if __name__ == '__main__':
class_hierarchy(BaseException)
# ============================================================
# the output should be similar to the following lines
# ============================================================
"""
BaseException
Exception
EOFError
NameError
UnboundLocalError
ReferenceError
ValueError
UnicodeError
UnicodeEncodeError
UnicodeDecodeError
UnicodeTranslateError
UnsupportedOperation
AssertionError
ImportError
ZipImportError
Warning
ImportWarning
DeprecationWarning
RuntimeWarning
ResourceWarning
PendingDeprecationWarning
UserWarning
SyntaxWarning
FutureWarning
UnicodeWarning
BytesWarning
BufferError
OSError
TimeoutError
InterruptedError
ProcessLookupError
NotADirectoryError
PermissionError
FileNotFoundError
ChildProcessError
ConnectionError
BrokenPipeError
ConnectionAbortedError
ConnectionRefusedError
ConnectionResetError
IsADirectoryError
UnsupportedOperation
FileExistsError
BlockingIOError
AttributeError
SyntaxError
IndentationError
TabError
StopIteration
LookupError
IndexError
KeyError
CodecRegistryError
TypeError
MemoryError
SystemError
CodecRegistryError
StopAsyncIteration
ArithmeticError
FloatingPointError
OverflowError
ZeroDivisionError
RuntimeError
RecursionError
NotImplementedError
_DeadlockError
Error
GeneratorExit
SystemExit
KeyboardInterrupt
"""
Comments