
Manejo de Errores en Python: Programación Robusta
Aprende a manejar errores y excepciones en Python. Try-except, tipos de errores y mejores prácticas para escribir código más confiable.
¡Aprende a manejar errores de manera elegante en Python! En este tutorial completo te enseñaremos cómo hacer que tus programas sean más robustos y confiables mediante el manejo adecuado de excepciones.
Objetivo: Aprender a identificar, manejar y prevenir errores en Python usando try-except, tipos de excepciones y mejores prácticas.
Índice
- Introducción al Manejo de Errores
- Try-Except: La Base del Manejo de Errores
- Tipos Comunes de Excepciones
- Manejo de Múltiples Excepciones
- Else y Finally
- Crear Excepciones Personalizadas
- Mejores Prácticas
- Assert: Verificaciones Internas
- Conclusión
Introducción al Manejo de Errores
Los errores son inevitables en la programación, pero podemos manejarlos de manera elegante para que nuestros programas sean más robustos y confiables. El manejo de errores nos permite anticipar problemas y responder apropiadamente.
¿Por qué es Importante el Manejo de Errores?
- Robustez: Los programas no se detienen abruptamente
- Experiencia de usuario: Mensajes claros en lugar de errores técnicos
- Depuración: Identificar y solucionar problemas más fácilmente
- Mantenimiento: Código más fácil de mantener y actualizar
Try-Except: La Base del Manejo de Errores
# Sintaxis básica
try:
# Código que puede generar un error
resultado = 10 / 0
except ZeroDivisionError:
# Código que se ejecuta si ocurre el error
print("Error: No se puede dividir por cero")
print("El programa continúa ejecutándose")
Tipos Comunes de Excepciones
Excepción | Descripción | Ejemplo |
---|---|---|
ValueError |
Valor incorrecto para una operación | int("abc") |
TypeError |
Operación con tipos incompatibles | "hola" + 5 |
ZeroDivisionError |
División por cero | 10 / 0 |
IndexError |
Índice fuera de rango | lista[10] cuando lista tiene 3 elementos |
KeyError |
Clave no encontrada en diccionario | diccionario["clave_inexistente"] |
FileNotFoundError |
Archivo no encontrado | open("archivo_inexistente.txt") |
Manejo de Múltiples Excepciones
def dividir_numeros(a, b):
try:
resultado = a / b
return resultado
except ZeroDivisionError:
print("❌ Error: No se puede dividir por cero")
return None
except TypeError:
print("❌ Error: Ambos valores deben ser números")
return None
except Exception as e:
print(f"❌ Error inesperado: {e}")
return None
# Pruebas
print(dividir_numeros(10, 2)) # 5.0
print(dividir_numeros(10, 0)) # Error: No se puede dividir por cero
print(dividir_numeros(10, "2")) # Error: Ambos valores deben ser números
Else y Finally
def procesar_archivo(nombre_archivo):
try:
archivo = open(nombre_archivo, 'r')
contenido = archivo.read()
print("Archivo leído exitosamente")
return contenido
except FileNotFoundError:
print(f"❌ Error: El archivo '{nombre_archivo}' no existe")
return None
except PermissionError:
print(f"❌ Error: No tienes permisos para leer '{nombre_archivo}'")
return None
else:
# Se ejecuta solo si NO hubo excepciones
print("✅ Procesamiento completado sin errores")
finally:
# Se ejecuta SIEMPRE, haya o no excepciones
try:
archivo.close()
print("📁 Archivo cerrado correctamente")
except:
pass # El archivo podría no estar abierto
# Uso
resultado = procesar_archivo("ejemplo.txt")
Crear Excepciones Personalizadas
class EdadInvalidaError(Exception):
"""Excepción personalizada para edades inválidas"""
pass
def validar_edad(edad):
if not isinstance(edad, (int, float)):
raise TypeError("La edad debe ser un número")
if edad < 0:
raise EdadInvalidaError("La edad no puede ser negativa")
if edad > 150:
raise ValueError("La edad parece irrealisticamente alta")
return edad
# Uso con excepciones personalizadas
try:
edad_valida = validar_edad(-5)
print(f"Edad válida: {edad_valida}")
except EdadInvalidaError as e:
print(f"Error de edad: {e}")
except (TypeError, ValueError) as e:
print(f"Error de validación: {e}")
Mejores Prácticas
- Sé Específico: Captura excepciones específicas, no genéricas
- Proporciona Contexto: Incluye información útil en los mensajes de error
- Limpia Recursos: Usa
finally
para cerrar archivos y conexiones - No Silencies Errores: Maneja los errores, no los ignores
- Registra Errores: Usa logging para errores en producción
import logging
# Configurar logging
logging.basicConfig(level=logging.ERROR)
def funcion_segura():
try:
# Operación riesgosa
resultado = 10 / 0
return resultado
except Exception as e:
# Registrar el error
logging.error(f"Error en funcion_segura: {e}")
# Proporcionar respuesta amigable al usuario
return "Lo sentimos, ocurrió un error interno"
resultado = funcion_segura()
print(resultado) # "Lo sentimos, ocurrió un error interno"
Assert: Verificaciones Internas
def calcular_promedio(notas):
# Verificaciones internas durante desarrollo
assert isinstance(notas, list), "notas debe ser una lista"
assert len(notas) > 0, "la lista no puede estar vacía"
assert all(isinstance(nota, (int, float)) for nota in notas), "todas deben ser números"
return sum(notas) / len(notas)
# Si una aserción falla, detiene la ejecución inmediatamente
promedio = calcular_promedio([8, 9, 7])
print(f"Promedio: {promedio}")
El manejo de errores es una habilidad crucial que diferencia a un programador principiante de uno experimentado. Aprender a anticipar y manejar errores hace que tus programas sean más profesionales y confiables.
Conclusión
Has aprendido los fundamentos del manejo de errores en Python. Esta habilidad es esencial para escribir código robusto y profesional. Practica implementando try-except en tus programas y verás cómo mejora la calidad de tu código.
Para más tutoriales sobre fundamentos de programación y Python, visita nuestra sección de tutoriales.
¡Sigue programando y creando cosas increíbles!
💡 Tip Importante
📝 Consejos para Manejo de Errores
- Anticipa errores comunes: Piensa en qué puede salir mal
- Proporciona mensajes claros: Los usuarios no entienden errores técnicos
- Registra errores: Mantén un registro de problemas para debugging
- Prueba casos extremos: Incluye validación de entradas
- Usa excepciones específicas: Evita capturar Exception genérica
📚 Recursos Recomendados:
¡Tu viaje en la programación continúa. Sigue adelante y nunca dejes de aprender!
No hay comentarios aún
Sé el primero en comentar este tutorial.