Manejo de errores con try, except y finally en Python

Clase 29 de 32Curso de Fundamentos de Python

Resumen

Aprende a manejar errores en Python con confianza: captura excepciones con try, responde con except y garantiza acciones finales con finally. Con ejemplos claros como ZeroDivisionError y NameError, verás cómo evitar caídas y comunicar la intención del código con mensajes útiles.

¿Qué es try y except en Python?

Python ofrece una estructura simple para el manejo de errores. El bloque try intenta ejecutar código y el bloque except captura la excepción si ocurre un problema. Usarlo de forma consciente mejora la legibilidad y la estabilidad del programa.

  • Sintaxis clara y legible.
  • Indentación obligatoria para cada bloque.
  • Mensajes en la terminal que facilitan el diagnóstico.
  • Especificar la excepción comunica intención al lector del código.

Ejemplo básico:

try: print("Intentamos algo") except: print("Captura error")

¿Cómo capturar errores comunes: ZeroDivisionError y NameError?

Identificar el tipo de error y declararlo en except es una buena práctica. Especificar la clase de excepción evita ocultar problemas no previstos y guía a quien lea el código.

¿Cómo manejar ZeroDivisionError?

Cuando se divide por cero, Python lanza ZeroDivisionError. Es recomendable capturarlo de forma explícita.

# Sin manejo: resultado = 10 / 0 # Provoca ZeroDivisionError

# Con manejo específico: try: resultado = 10 / 0 print(resultado) except ZeroDivisionError: print("No se puede dividir por cero.")

  • Mensaje claro: “no se puede dividir por cero”.
  • El editor puede sugerir especificar el tipo de excepción.
  • Mejora el flujo del programa al evitar fallos abruptos.

¿Cómo manejar NameError?

Acceder a una variable no definida dispara NameError. Capturarlo permite informar qué ocurrió sin detener el programa.

# Sin manejo: print(x) # Provoca NameError

# Con manejo específico: try: print(x) except NameError: print("Esta variable no ha sido definida.")

  • Útil cuando el flujo del programa puede no definir una variable.
  • Facilita depurar y comunicar el fallo.
  • Mantiene la ejecución bajo control.

¿Para qué sirve finally en el manejo de errores?

El bloque finally se ejecuta siempre, ocurra o no una excepción. Es ideal para acciones finales: por ejemplo, mostrar un aviso o ejecutar pasos que no deben omitirse.

# Con error presente: try: print(x) # x no definida except NameError: print("Esta variable no ha sido definida.") finally: print("Esto se ejecuta siempre.")

# Sin error: x = 1 try: print(x) except NameError: print("Esta variable no ha sido definida.") finally: print("Esto se ejecuta siempre.")

  • Garantiza la ejecución de pasos finales.
  • Funciona tanto si el try fue exitoso como si hubo error.
  • Mantiene consistente el comportamiento del programa.

¿Te encontraste con otros errores durante tu aprendizaje? Comparte en los comentarios qué excepciones te aparecieron y cómo las capturarías con try y except.