Los errores son inevitables: un usuario escribe texto donde esperabas un número, un archivo no existe, una
división entre cero. Sin manejo, un error DETIENE tu programa de golpe. Las EXCEPCIONES te dan control:
INTENTAS algo, y si falla, CAPTURAS el error y decides qué hacer —en vez de que todo se caiga—. Es la red
de seguridad de tus programas. Hoy dominas try/except y cómo lanzar tus propios errores con raise.
La red del trapecista
try / except
El bloque try contiene el código que PODRÍA fallar. Si ocurre un error, Python salta al except
correspondiente en vez de detenerse. except ValueError: captura ese tipo específico de error;
except ZeroDivisionError as e: además guarda el error en e para ver su mensaje. Lo clave: tras manejar
el error, el programa CONTINÚA —no se cae—. Capturas el tipo de error que ESPERAS (no todos a ciegas),
para manejar cada caso apropiadamente.
else, finally y tipos específicos
Lanzar errores con raise
¿Qué hacen try/except y en qué se diferencian else y finally?
Mini-reto
Haz una función robusta para Mi Bolsillo: 1) parsear_valor(texto) que use try/except para convertir un
texto a número entero con int(), devolviendo None (y un mensaje) si no es válido; 2) dividir(a, b) que
capture ZeroDivisionError y devuelva 0 si b es cero; 3) una función validar_gasto(valor) que use
raise ValueError si el valor es negativo o cero. Prueba cada una con entradas válidas e inválidas y
confirma que el programa nunca se cae.
Qué sigue
Ya capturas y lanzas errores. La próxima lección lleva esto más lejos con las EXCEPCIONES PERSONALIZADAS
—crear tus propios tipos de error con nombres significativos (SaldoInsuficienteError)—, para que tu
manejo de errores sea claro y específico del dominio de tu programa.