Capturar una Excepción Específica
En el paso anterior, aprendiste sobre diferentes tipos de excepciones en Python. Ahora, aprenderás cómo capturar una excepción específica utilizando el bloque try...except
. Esto te permite manejar diferentes errores de diferentes maneras, lo que hace que tu código sea más robusto.
Al capturar excepciones, es una buena práctica ser lo más específico posible. Esto evita que tu bloque except
capture accidentalmente excepciones que no está diseñado para manejar, lo que puede ocultar errores y dificultar la depuración.
Modifiquemos el script exceptions_demo.py
para capturar una excepción específica, como ValueError
, cuando se intenta convertir una cadena en un entero.
- Abre el archivo
exceptions_demo.py
en el directorio ~/project
utilizando VS Code.
- Modifica el script para capturar solo el
ValueError
cuando se convierte una cadena en un entero:
try:
num = int("abc")
except ValueError as e:
print(f"ValueError caught: {e}")
except Exception as e:
print(f"Some other exception: {e}")
print("Continuing execution...")
En este ejemplo, capturamos específicamente el ValueError
que se produce cuando int("abc")
falla. Si se produce cualquier otra excepción dentro del bloque try
, será capturada por el bloque except Exception as e:
. La declaración print("Continuing execution...")
siempre se ejecutará si se captura cualquier excepción, lo que demuestra que el programa continúa ejecutándose después de manejar la excepción.
Ahora, ejecutemos el script:
- Abre la terminal en VS Code.
- Navega al directorio
~/project
:
cd ~/project
- Ejecuta el script
exceptions_demo.py
utilizando el comando python:
python exceptions_demo.py
Deberías ver la siguiente salida:
ValueError caught: invalid literal for int() with base 10: 'abc'
Continuing execution...
Esta salida muestra que se capturó el ValueError
y que el programa continuó ejecutándose.
Ahora, modifiquemos el script para levantar una excepción diferente, como TypeError
, y veamos cómo se maneja:
- Abre el archivo
exceptions_demo.py
en el directorio ~/project
utilizando VS Code.
- Modifica el script para levantar un
TypeError
:
try:
result = 1 + "a"
except ValueError as e:
print(f"ValueError caught: {e}")
except Exception as e:
print(f"Some other exception: {e}")
print("Continuing execution...")
Ahora, ejecuta el script nuevamente:
python exceptions_demo.py
Deberías ver la siguiente salida:
Some other exception: unsupported operand type(s) for +: 'int' and 'str'
Continuing execution...
Esta salida muestra que el TypeError
fue capturado por el bloque except Exception as e:
, porque no hay un bloque except TypeError
específico.
Capturar excepciones específicas te permite manejar diferentes errores de diferentes maneras, lo que hace que tu código sea más robusto y fácil de depurar. En el siguiente paso, aprenderás cómo verificar la instancia de la excepción.