Acceder a los argumentos de la excepción
En este paso, aprenderás cómo acceder a los argumentos (args) asociados a una excepción en Python. Los argumentos de una excepción pueden proporcionar detalles más específicos sobre el error que se ha producido.
Modifiquemos el archivo exceptions.py
que creaste en el paso anterior para acceder e imprimir los argumentos de la excepción. Abre exceptions.py
en tu directorio ~/project
utilizando el editor VS Code.
## exceptions.py
def divide(x, y):
try:
result = x / y
print("The result is:", result)
except Exception as e:
print("An error occurred:", type(e), e.args)
divide(10, 2)
divide(10, 0)
divide("hello", 5)
En este código, hemos modificado el bloque except
para imprimir e.args
. El atributo args
es una tupla que contiene los argumentos que se pasaron al constructor de la excepción.
Ahora, ejecuta el script exceptions.py
:
python exceptions.py
Deberías ver la siguiente salida:
The result is: 5.0
An error occurred: <class 'ZeroDivisionError'> ('division by zero',)
An error occurred: <class 'TypeError'> ("unsupported operand type(s) for /: 'str' and 'int'",)
Como puedes ver, la salida ahora incluye los argumentos asociados a cada excepción. Para ZeroDivisionError
, el argumento es una tupla que contiene la cadena 'division by zero'
. Para TypeError
, el argumento es una tupla que contiene la cadena "unsupported operand type(s) for /: 'str' and 'int'"
.
Modifiquemos el archivo exceptions.py
nuevamente para acceder directamente al primer argumento:
## exceptions.py
def divide(x, y):
try:
result = x / y
print("The result is:", result)
except Exception as e:
print("An error occurred:", type(e), e.args[0])
divide(10, 2)
divide(10, 0)
divide("hello", 5)
Ejecuta el script nuevamente:
python exceptions.py
Deberías ver la siguiente salida:
The result is: 5.0
An error occurred: <class 'ZeroDivisionError'> division by zero
An error occurred: <class 'TypeError'> unsupported operand type(s) for /: 'str' and 'int'
Al acceder a e.args[0]
, podemos extraer el primer argumento de la excepción, que suele ser la parte más descriptiva del mensaje de error.