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.