Implementar un Bloque try-except
En el paso anterior, viste cómo las excepciones pueden hacer que un programa termine abruptamente. Para manejar las excepciones de manera elegante y evitar que el programa se bloquee, puedes utilizar bloques try
y except
.
Un bloque try
te permite encerrar una sección de código que podría levantar una excepción. Si se produce una excepción dentro del bloque try
, el programa saltará al bloque except
correspondiente, donde puedes manejar la excepción.
Modifiquemos el archivo exceptions_example.py
para incluir un bloque try-except
que maneje el ZeroDivisionError
. Abre el archivo exceptions_example.py
en el editor de VS Code y modifícalo de la siguiente manera:
## ~/project/exceptions_example.py
def divide(x, y):
try:
result = x / y
return result
except ZeroDivisionError:
return "Cannot divide by zero!"
print(divide(10, 2))
print(divide(5, 0))
print(divide(8, 4))
En este código modificado:
- Hemos agregado un bloque
try
alrededor de la operación x / y
. Esto significa que si se produce un ZeroDivisionError
durante la división, el programa saltará al bloque except
.
- La línea
except ZeroDivisionError:
especifica que queremos manejar las excepciones ZeroDivisionError
.
- Dentro del bloque
except
, devolvemos la cadena "Cannot divide by zero!"
. Esto se imprimirá en la consola en lugar de que el programa se bloquee.
Ahora, ejecutemos el script modificado. Abre la terminal en VS Code y ejecuta el siguiente comando:
python ~/project/exceptions_example.py
Verás una salida similar a esta:
5.0
Cannot divide by zero!
2.0
Como puedes ver, el programa ya no se bloquea cuando se divide por cero. En cambio, el bloque except
captura el ZeroDivisionError
y se imprime el mensaje "Cannot divide by zero!"
. Luego, el programa continúa ejecutándose y la última instrucción print
también se ejecuta correctamente.
Los bloques try-except
también se pueden utilizar para manejar otros tipos de excepciones. Por ejemplo, puedes utilizar un bloque try-except
para manejar las excepciones TypeError
que podrían ocurrir si intentas realizar una operación con tipos de datos incompatibles. También puedes tener múltiples bloques except
para manejar diferentes tipos de excepciones.
En el siguiente paso, aprenderás cómo usar pytest
para probar excepciones.