¿Cómo imprimir la jerarquía de excepciones/errores de Python?

Antes de imprimir la jerarquía de errores, comprendamos qué es realmente una excepción. Las excepciones ocurren incluso si nuestro código es sintácticamente correcto, sin embargo, durante la ejecución arrojan un error. No son incondicionalmente fatales, los errores que obtenemos durante la ejecución se denominan Excepciones. Hay muchas excepciones integradas en Python, intentemos imprimirlas en una jerarquía.

Para imprimir la jerarquía del árbol, usaremos el módulo de inspección en Python. El módulo de inspección proporciona funciones útiles para obtener información sobre objetos como módulos, clases, métodos, funciones y objetos de código. Por ejemplo, puede ayudarlo a examinar el contenido de una clase, extraer y formatear la lista de argumentos para una función.

Para construir una jerarquía de árbol usaremos inspeccionar.getclasstree().

Sintaxis: inspeccionar.getclasstree(clases, único=Falso)

inspect.getclasstree() organiza la lista de clases dada en una jerarquía de listas anidadas. Cuando aparece una lista anidada, contiene clases derivadas de la clase cuya entrada precede inmediatamente a la lista.

Si el argumento único es verdadero, aparece exactamente una entrada en la estructura devuelta para cada clase en la lista dada. De lo contrario, las clases que usan herencia múltiple y sus descendientes aparecerán varias veces.

Escribamos un código para imprimir la jerarquía del árbol para las excepciones integradas:

Python3

# import inspect module
import inspect
  
# our treeClass function
def treeClass(cls, ind = 0):
    
      # print name of the class
    print ('-' * ind, cls.__name__)
      
    # iterating through subclasses
    for i in cls.__subclasses__():
        treeClass(i, ind + 3)
  
print("Hierarchy for Built-in exceptions is : ")
  
# inspect.getmro() Return a tuple 
# of class  cls’s base classes.
  
# building a tree hierarchy 
inspect.getclasstree(inspect.getmro(BaseException))
  
# function call
treeClass(BaseException)

Producción:

Hierarchy for Built-in exceptions is : 
 BaseException
--- Exception
------ TypeError
------ StopAsyncIteration
------ StopIteration
------ ImportError
--------- ModuleNotFoundError
--------- ZipImportError
------ OSError
--------- ConnectionError
------------ BrokenPipeError
------------ ConnectionAbortedError
------------ ConnectionRefusedError
------------ ConnectionResetError
--------- BlockingIOError
--------- ChildProcessError
--------- FileExistsError
--------- FileNotFoundError
--------- IsADirectoryError
--------- NotADirectoryError
--------- InterruptedError
--------- PermissionError
--------- ProcessLookupError
--------- TimeoutError
--------- UnsupportedOperation
------ EOFError
------ RuntimeError
--------- RecursionError
--------- NotImplementedError
--------- _DeadlockError
------ NameError
--------- UnboundLocalError
------ AttributeError
------ SyntaxError
--------- IndentationError
------------ TabError
------ LookupError
--------- IndexError
--------- KeyError
--------- CodecRegistryError
------ ValueError
--------- UnicodeError
------------ UnicodeEncodeError
------------ UnicodeDecodeError
------------ UnicodeTranslateError
--------- UnsupportedOperation
------ AssertionError
------ ArithmeticError
--------- FloatingPointError
--------- OverflowError
--------- ZeroDivisionError
------ SystemError
--------- CodecRegistryError
------ ReferenceError
------ MemoryError
------ BufferError
------ Warning
--------- UserWarning
--------- DeprecationWarning
--------- PendingDeprecationWarning
--------- SyntaxWarning
--------- RuntimeWarning
--------- FutureWarning
--------- ImportWarning
--------- UnicodeWarning
--------- BytesWarning
--------- ResourceWarning
------ _OptionError
------ error
------ Verbose
------ Error
------ TokenError
------ StopTokenizing
------ EndOfBlock
--- GeneratorExit
--- SystemExit
--- KeyboardInterrupt

Publicación traducida automáticamente

Artículo escrito por atharvapaliwal7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *