Aprender el flujo de manejo de excepciones
En este paso, aprenderás sobre el manejo de excepciones en Python. El manejo de excepciones es una parte crucial para escribir código robusto y confiable. Te permite manejar de forma elegante los errores que pueden ocurrir durante la ejecución de tu programa, evitando que se bloquee y brindando una experiencia más amigable para el usuario.
Comencemos con un ejemplo sencillo. Imagina que quieres dividir dos números, pero el segundo número podría ser cero. Dividir por cero es una operación indefinida y generará un ZeroDivisionError
en Python.
-
Abre el editor de VS Code en el entorno de LabEx.
-
Crea un nuevo archivo llamado division.py
en el directorio ~/project
.
touch ~/project/division.py
-
Edita el archivo division.py
y agrega el siguiente código:
## division.py
numerator = 10
denominator = 0
result = numerator / denominator
print(result)
-
Ejecuta el script utilizando el comando python
:
python ~/project/division.py
Verás un mensaje de error similar a este:
Traceback (most recent call last):
File "/home/labex/project/division.py", line 4, in <module>
result = numerator / denominator
ZeroDivisionError: division by zero
Este mensaje de error indica que se produjo un ZeroDivisionError
porque intentamos dividir por cero. Sin manejo de excepciones, el programa se detiene abruptamente.
Ahora, usemos el manejo de excepciones para manejar este error de forma elegante.
-
Modifica el archivo division.py
para incluir un bloque try...except
:
## division.py
numerator = 10
denominator = 0
try:
result = numerator / denominator
print(result)
except ZeroDivisionError:
print("Error: Cannot divide by zero.")
En este código, el bloque try
contiene el código que podría generar una excepción. Si se produce un ZeroDivisionError
dentro del bloque try
, se ejecutará el código en el bloque except
.
-
Vuelve a ejecutar el script:
python ~/project/division.py
Ahora, en lugar de bloquearse, el programa mostrará:
Error: Cannot divide by zero.
Esto demuestra la estructura básica del manejo de excepciones:
- El bloque
try
encierra el código que podría generar una excepción.
- El bloque
except
especifica el tipo de excepción a capturar y el código a ejecutar si se produce esa excepción.
También puedes capturar múltiples tipos de excepciones utilizando múltiples bloques except
:
## division.py
numerator = 10
denominator = "abc"
try:
result = numerator / int(denominator)
print(result)
except ZeroDivisionError:
print("Error: Cannot divide by zero.")
except ValueError:
print("Error: Invalid input. Please enter a number.")
En este ejemplo, hemos agregado un controlador de excepción ValueError
. Si el denominator
no se puede convertir a un entero (por ejemplo, si es una cadena como "abc"), se generará un ValueError
y se ejecutará el bloque except
correspondiente.
Ejecuta el script:
python ~/project/division.py
Salida:
Error: Invalid input. Please enter a number.
El manejo de excepciones te permite escribir programas más robustos y amigables para el usuario al anticipar y manejar posibles errores.