Manejo de errores con try, except y finally en Python
Clase 29 de 32 • Curso 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.