Introducción al manejo de excepciones en Python
En el desarrollo de aplicaciones con Python, es fundamental saber cómo gestionar los errores que pueden ocurrir durante la ejecución de un programa. El lenguaje proporciona una estructura muy potente para ello: try, except, else y finally. En esta guía completa aprenderás cómo utilizar try, except, else y finally en Python con ejemplos prácticos y explicaciones paso a paso.
¿Qué son try, except, else y finally?
Estas son palabras clave que permiten manejar excepciones o errores de forma controlada. Su uso adecuado mejora la robustez y fiabilidad de tus programas.
try
El bloque try contiene el código que puede generar una excepción. Si ocurre un error, el flujo pasa al bloque except.
except
Aquí se manejan las excepciones. Puedes capturar errores específicos o cualquier excepción genérica.
else
El bloque else se ejecuta solo si no ocurre ninguna excepción en el bloque try.
finally
El bloque finally se ejecuta siempre, ocurra o no una excepción. Es ideal para liberar recursos o ejecutar tareas de limpieza.
¿Cómo usar try y except en Python?
La forma más básica de manejar excepciones en Python es utilizando solo try y except. Veamos un ejemplo:
try:
numero = int(input("Introduce un número: "))
print("El número es:", numero)
except ValueError:
print("¡Eso no es un número válido!")
En este ejemplo, si el usuario introduce algo que no se puede convertir a entero, se lanza una excepción ValueError y se muestra el mensaje personalizado.
Captura de varias excepciones
Puedes capturar diferentes tipos de excepciones utilizando múltiples bloques except:
try:
resultado = 10 / int(input("Divisor: "))
except ZeroDivisionError:
print("No puedes dividir por cero.")
except ValueError:
print("Debes introducir un número.")
¿Cómo se usa else en try-except?
El bloque else se ejecuta si no se produce ninguna excepción en el bloque try. Esto es útil para colocar el código que solo debe ejecutarse cuando todo ha ido bien.
try:
numero = int(input("Introduce un número positivo: "))
except ValueError:
print("Eso no es un número válido.")
else:
print("¡Buen trabajo! Has introducido:", numero)
Aquí, el mensaje de éxito solo se muestra si la conversión a entero fue correcta.
¿Para qué sirve finally en Python?
El bloque finally se utiliza para ejecutar código que debe ejecutarse siempre, como cerrar archivos, liberar conexiones o recursos, independientemente de si ocurrió o no una excepción.
try:
archivo = open(datos.txt, r)
contenido = archivo.read()
print(contenido)
except FileNotFoundError:
print("El archivo no existe.")
finally:
archivo.close()
print("Archivo cerrado.")
En este ejemplo, el archivo se cierra siempre, aunque no exista o ocurra un error durante la lectura.
Ejemplo completo: try, except, else y finally
A continuación, te mostramos cómo combinar todos los bloques en una sola estructura para un manejo de errores más robusto:
try:
archivo = open(notas.txt, r)
texto = archivo.read()
except FileNotFoundError:
print("El archivo notas.txt no se encontró.")
else:
print("Contenido del archivo:")
print(texto)
finally:
try:
archivo.close()
print("Archivo cerrado correctamente.")
except NameError:
print("No fue necesario cerrar el archivo.")
En este ejemplo:
- try: intenta abrir y leer el archivo.
- except: captura el error si el archivo no existe.
- else: muestra el contenido si todo salió bien.
- finally: intenta cerrar el archivo siempre.
Consejos para el manejo de excepciones en Python
- Evita capturar excepciones genéricas (solo except:) salvo que sea estrictamente necesario.
- Utiliza except Exception as e para depurar o registrar errores.
- Coloca solo el código que puede fallar dentro de try, para evitar errores innecesarios.
- Utiliza finally para liberar recursos siempre.
Resumen: ¿Cómo se usan try, except, else y finally?
El uso correcto de try, except, else y finally en Python te permite gestionar errores de manera eficiente, escribir código más seguro y profesional, y asegurarte de que tus programas sean robustos y fáciles de mantener. Practica estos conceptos con los ejemplos propuestos y adáptalos a tus propios proyectos.