Manejo de Excepciones: El Arte de Fallar con Elegancia
En programación, un error no siempre es culpa del programador. Puede que un archivo no exista, que la conexión a internet se caiga o que un usuario escriba texto donde se esperaba un número. El bloque try-except permite que el programa siga funcionando a pesar de estos incidentes.
1. La Estructura de Control
Python utiliza cuatro palabras clave para gestionar errores:
try: El bloque de código que "intentamos" ejecutar y que podría fallar.except: El código que se ejecuta solo si ocurre un error dentro deltry.else: (Opcional) Se ejecuta solo si no hubo ningún error en eltry.finally: Se ejecuta siempre, haya habido error o no. Ideal para tareas de limpieza (cerrar archivos o bases de datos).
2. Captura Específica de Errores
Es una mala práctica usar un except: genérico. Debemos especificar qué error queremos capturar para no ocultar fallos que no conocemos.
| Excepción | Causa común |
|---|---|
ValueError |
Conversión de datos incompatible (ej. int("hola")). |
ZeroDivisionError |
Intentar dividir un número por cero. |
FileNotFoundError |
Intentar abrir un archivo que no existe. |
TypeError |
Operación entre tipos de datos no compatibles. |
Pro Tip: Puedes capturar el mensaje del error usando
as:except ValueError as e:. Esto permite imprimir exactamente qué salió mal.
3. ¿Por qué usar finally?
El bloque finally es el "seguro de vida" de tu código. Si abres una conexión a una base de datos en el try y el programa falla a mitad, el finally garantiza que la conexión se cierre, evitando que el servidor se sature o los datos se corrompan.
Reto: El Divisor Seguro
Vas a crear una pequeña calculadora que sea "imposible de romper". Debe manejar tanto errores de escritura como el error de dividir por cero.
Instrucciones:
1. Crea una variable resultado inicializada en 0.
2. Dentro de un bloque try:
- Crea una variable a que sea el entero de "10".
- Crea una variable b que sea el entero de "0".
- Divide a / b y guarda el valor en resultado.
3. Crea un bloque except ZeroDivisionError:
- Cambia resultado a la palabra "Error: División por cero".
4. Crea un bloque finally:
- Imprime "Cálculo finalizado".
# Crea un código que no se detenga por errores: