Control de errores en Python con try y except
Clase 10 de 25 • Curso de Python: Entornos virtuales, PEP8 y Manejo de Errores
Resumen
Aprende a controlar errores en Python con try/except para evitar caídas, mejorar la experiencia del usuario y mantener tu código legible. Desde capturar una división por cero hasta validar entradas, verás cómo responder con mensajes claros y útiles en lugar de rastreos de error pensados para desarrolladores.
¿Qué problema resuelve try/except en Python?
Cuando conviertes o recibes datos, algo puede fallar: un servidor puede estar caído o la entrada del usuario puede ser inválida. Con try/except, Python permite interceptar estas situaciones y definir una acción segura: mostrar un mensaje, asignar un valor por defecto o frenar la ejecución si estás dentro de una función.
Un ejemplo base: pedir dos números y dividirlos. Si el usuario digita cero para el divisor, ocurre un ZeroDivisionError; si escribe texto, aparece ValueError. Con manejo de excepciones, puedes informar al usuario de forma clara y continuar el flujo del programa cuando tiene sentido.
# try_except.py
# Entrada del usuario y división
A = int(input("Digita un número: "))
B = int(input("Digita otro número: "))
resultado = A / B
print(resultado)
¿Cómo implementar try y except paso a paso?
Primero, identifica la línea que puede fallar y envuélvela en try. Luego maneja el error con except. Puedes comenzar capturando una excepción general con Exception, observar el tipo real y después especializar el manejo.
try:
A = int(input("Digita un número: "))
B = int(input("Digita otro número: "))
resultado = A / B
print(resultado)
except Exception as e:
print("Ocurrió un error:", e)
print("Tipo de error:", type(e))
Esto te mostrará mensajes como "invalid literal for int()" (propio de ValueError) o "division by zero" (propio de ZeroDivisionError).
¿Cómo capturar ZeroDivisionError sin ocultar otros errores?
Sé específico cuando conoces el problema esperado: dividir entre cero. Así evitas atrapar errores no relacionados.
try:
A = int(input("Digita un número: "))
B = int(input("Digita otro número: "))
resultado = A / B
print(resultado)
except ZeroDivisionError:
print("No está permitido dividir por cero.")
¿Cómo validar entradas y capturar ValueError?
Si el usuario escribe "hola" en lugar de un número, int() lanza ValueError. Captúralo y guía al usuario.
try:
A = int(input("Digita un número: "))
B = int(input("Digita otro número: "))
resultado = A / B
print(resultado)
except ValueError:
print("El valor digitado no es un número válido.")
except ZeroDivisionError:
print("No está permitido dividir por cero.")
Puedes imprimir el error concreto con as e
si necesitas más detalle para diagnóstico.
¿Cómo evitar múltiples try innecesarios?
En lugar de anidar varios try, concentra el bloque de riesgo y usa múltiples except específicos. Esto mantiene el código claro y mantenible.
¿Qué buenas prácticas debes aplicar al manejar excepciones en Python?
Además de proteger el código contra entradas inválidas o divisiones por cero, aplica criterios de calidad para que tu manejo de errores aporte valor real en desarrollo y producción.
- No exageres: agrega try/except solo donde esperas errores. Evita rodear todo el programa.
- Sé específico: prefiere ValueError y ZeroDivisionError a usar Exception genérica.
- Muestra mensajes útiles: informa al usuario con claridad y sin tecnicismos.
- Registra el error: haz logging o imprime el error en consola para facilitar el debugging.
- Controla el flujo: si estás en una función, usa
return
tras manejar el error para evitar efectos secundarios. - Prueba escenarios reales: por ejemplo, al conectarte a una News API, cambia la API key por una inválida y captura el fallo del request. Muestra un mensaje: "La conexión a la News API está fallando porque la API es inválida".
¿Te animas a aplicar estas técnicas a tu propio código? Comparte tus dudas o tu solución del reto con la News API en los comentarios y enriquezcamos la conversación con ejemplos prácticos.