En este paso, aprenderás cómo verificar clases de excepciones específicas directamente en tus bloques except
. Esto es una forma más directa y, a menudo, más clara de manejar excepciones en comparación con el uso de isinstance()
.
Vamos a crear un script de Python para demostrar esto.
-
Abre tu editor de VS Code.
-
Crea un nuevo archivo llamado exception_classes.py
en el directorio ~/project
.
~/project/exception_classes.py
-
Agrega el siguiente código al archivo exception_classes.py
:
try:
result = 10 / 0
except ZeroDivisionError as e:
print("Caught a ZeroDivisionError:", e)
except ArithmeticError as e:
print("Caught an ArithmeticError:", e)
except Exception as e:
print("Caught some other exception:", e)
print("Program continues...")
En este script, estamos intentando dividir 10 entre 0, lo que generará una excepción ZeroDivisionError
. Tenemos tres bloques except
: uno para ZeroDivisionError
, uno para ArithmeticError
y uno para Exception
.
-
Ejecuta el script utilizando el siguiente comando en la terminal:
python exception_classes.py
Esto imprimirá "Caught a ZeroDivisionError: division by zero" en la terminal.
Ejemplo de salida:
Caught a ZeroDivisionError: division by zero
Program continues...
La salida muestra que la excepción ZeroDivisionError
fue capturada por el primer bloque except
.
Ahora, modifiquemos el script para generar una excepción diferente.
-
Modifica el archivo exception_classes.py
para que sea el siguiente:
try:
result = int("abc")
except ZeroDivisionError as e:
print("Caught a ZeroDivisionError:", e)
except ValueError as e:
print("Caught a ValueError:", e)
except ArithmeticError as e:
print("Caught an ArithmeticError:", e)
except Exception as e:
print("Caught some other exception:", e)
print("Program continues...")
En este script modificado, estamos intentando convertir la cadena "abc" en un entero, lo que generará una excepción ValueError
.
-
Ejecuta el script nuevamente utilizando el mismo comando:
python exception_classes.py
Esto imprimirá "Caught a ValueError: invalid literal for int() with base 10: 'abc'" en la terminal.
Ejemplo de salida:
Caught a ValueError: invalid literal for int() with base 10: 'abc'
Program continues...
Esta salida muestra que la excepción ValueError
fue capturada por el segundo bloque except
.
Al especificar la clase de excepción directamente en el bloque except
, puedes manejar diferentes tipos de excepciones de manera clara y organizada. Este enfoque generalmente se prefiere sobre el uso de isinstance()
para el manejo simple de excepciones.