El manejo de errores en Python es una habilidad esencial que separa a los programadores principiantes de los profesionales. En esta guía completa, aprenderá a usar try except para capturar, manejar y prevenir excepciones, creando aplicaciones robustas y confiables.

El bloque try/except en Python es la estructura principal para el manejo de excepciones. Permite que su programa detecte errores durante la ejecución y responda de forma controlada, evitando que la aplicación se bloquee por completo.

Las excepciones son errores detectados durante la ejecución. A diferencia de los errores de sintaxis (que impiden que el código se ejecute), las excepciones ocurren mientras el programa se está ejecutando. Puede obtener más información en la documentación oficial de Python.

## Ejemplo básico de try/except
try:
    numero = int(input("Ingrese un número: "))
    print(f"Ingresó: {numero}")
except ValueError:
    print("❌ Error: ¡Por favor, ingrese solo números!")
    numero = 0

Estructura Completa: Try/Except/Else/Finally

Python ofrece cuatro bloques principales para manejar excepciones:

  • try: Contiene el código que puede generar una excepción.
  • except: Se ejecuta cuando ocurre una excepción.
  • else: Se ejecuta cuando no ocurre ninguna excepción.
  • finally: Siempre se ejecuta, independientemente de los errores (ideal para la limpieza).

Tipos de Excepciones Comunes

Conocer los tipos de excepciones comunes es fundamental para un manejo eficaz:

  • ValueError: Valor incorrecto para una operación (ej. int("abc")).
  • TypeError: Operación con un tipo incorrecto (ej. "2" + 2).
  • IndexError: Índice fuera de rango en listas.
  • KeyError: La clave no existe en diccionarios.
  • ZeroDivisionError: División por cero.

Utilizar else, finally y Encadenamiento

Mantenga el bloque try lo más pequeño posible para capturar únicamente la operación que puede fallar. Coloque en else el código que debe ejecutarse después de un intento exitoso y reserve finally para la limpieza necesaria en cualquier resultado. Los context managers suelen ser una opción más clara para cerrar archivos y conexiones.

def cargar_puerto(valor: str) -> int:
    try:
        puerto = int(valor)
    except ValueError as error:
        raise ValueError("El puerto debe ser un entero") from error
    else:
        if not 1 <= puerto <= 65535:
            raise ValueError("Puerto fuera de rango")
        return puerto

Checklist para Producción

  • Capture la excepción más específica que pueda resolver.
  • No oculte fallos con un except vacío.
  • Conserve la causa original con raise ... from error.
  • Registre fallos inesperados con contexto, sin exponer secretos.
  • Cree excepciones de dominio cuando el llamador deba distinguir errores de negocio.

Las pruebas deben cubrir el camino exitoso y cada fallo esperado. El mensaje debe explicar qué operación falló sin incluir contraseñas, tokens ni datos personales.

Conclusión

El manejo de errores es fundamental para crear aplicaciones robustas y profesionales. ¡Domine try/except y sus programas estarán listos para la producción! Para más información, consulte nuestras guías sobre Funciones y POO.