En Python, las excepciones son una herramienta poderosa para manejar errores y situaciones inesperadas en el flujo de un programa. En esta lección, aprenderemos cómo lanzar (o "raise") excepciones de manera explícita utilizando la palabra clave raise
. Esto nos permite crear nuestros propios errores y manejar situaciones específicas de manera controlada.
Conceptos Clave
- Excepciones: Son eventos que ocurren durante la ejecución de un programa y que interrumpen el flujo normal de las instrucciones.
- Lanzar Excepciones: Utilizar la palabra clave
raise
para generar una excepción de manera explícita. - Tipos de Excepciones: Python tiene varias excepciones integradas como
ValueError
,TypeError
,IndexError
, etc.
Lanzar Excepciones con raise
La palabra clave raise
se utiliza para lanzar una excepción. La sintaxis básica es:
Ejemplo Básico
def divide(a, b): if b == 0: raise ValueError("El divisor no puede ser cero.") return a / b try: result = divide(10, 0) except ValueError as e: print(f"Error: {e}")
Explicación:
- La función
divide
lanza unaValueError
si el divisor es cero. - En el bloque
try
, intentamos dividir 10 por 0, lo que lanza la excepción. - El bloque
except
captura la excepción y muestra un mensaje de error.
Ejemplo con Múltiples Excepciones
def process_input(value): if not isinstance(value, int): raise TypeError("El valor debe ser un entero.") if value < 0: raise ValueError("El valor no puede ser negativo.") return value * 2 try: result = process_input(-5) except TypeError as e: print(f"Error de tipo: {e}") except ValueError as e: print(f"Error de valor: {e}")
Explicación:
- La función
process_input
lanza unaTypeError
si el valor no es un entero y unaValueError
si el valor es negativo. - En el bloque
try
, intentamos procesar el valor -5, lo que lanza unaValueError
. - El bloque
except
captura la excepción y muestra un mensaje de error específico.
Ejercicios Prácticos
Ejercicio 1: Validación de Edad
Escribe una función validate_age
que tome una edad como argumento y lance una ValueError
si la edad es menor que 0 o mayor que 120.
def validate_age(age): if age < 0 or age > 120: raise ValueError("La edad debe estar entre 0 y 120.") return True # Prueba tu función try: validate_age(150) except ValueError as e: print(f"Error: {e}")
Ejercicio 2: Validación de Nombre
Escribe una función validate_name
que tome un nombre como argumento y lance una TypeError
si el nombre no es una cadena y una ValueError
si la cadena está vacía.
def validate_name(name): if not isinstance(name, str): raise TypeError("El nombre debe ser una cadena.") if not name: raise ValueError("El nombre no puede estar vacío.") return True # Prueba tu función try: validate_name("") except (TypeError, ValueError) as e: print(f"Error: {e}")
Soluciones
Solución al Ejercicio 1
def validate_age(age): if age < 0 or age > 120: raise ValueError("La edad debe estar entre 0 y 120.") return True # Prueba tu función try: validate_age(150) except ValueError as e: print(f"Error: {e}")
Solución al Ejercicio 2
def validate_name(name): if not isinstance(name, str): raise TypeError("El nombre debe ser una cadena.") if not name: raise ValueError("El nombre no puede estar vacío.") return True # Prueba tu función try: validate_name("") except (TypeError, ValueError) as e: print(f"Error: {e}")
Resumen
En esta lección, hemos aprendido cómo lanzar excepciones en Python utilizando la palabra clave raise
. Esto nos permite manejar errores de manera más controlada y específica. Hemos visto ejemplos prácticos y hemos realizado ejercicios para reforzar los conceptos aprendidos. Ahora estamos mejor preparados para manejar situaciones excepcionales en nuestros programas de Python.
En la próxima lección, aprenderemos sobre cómo crear nuestras propias excepciones personalizadas para manejar casos aún más específicos.
Curso de Programación en Python
Módulo 1: Introducción a Python
- Introducción a Python
- Configuración del Entorno de Desarrollo
- Sintaxis de Python y Tipos de Datos Básicos
- Variables y Constantes
- Entrada y Salida Básica
Módulo 2: Estructuras de Control
- Sentencias Condicionales
- Bucles: for y while
- Herramientas de Control de Flujo
- Comprensiones de Listas
Módulo 3: Funciones y Módulos
- Definición de Funciones
- Argumentos de Función
- Funciones Lambda
- Módulos y Paquetes
- Visión General de la Biblioteca Estándar
Módulo 4: Estructuras de Datos
Módulo 5: Programación Orientada a Objetos
Módulo 6: Manejo de Archivos
- Lectura y Escritura de Archivos
- Trabajo con Archivos CSV
- Manejo de Datos JSON
- Operaciones de Archivos y Directorios
Módulo 7: Manejo de Errores y Excepciones
- Introducción a las Excepciones
- Manejo de Excepciones
- Lanzamiento de Excepciones
- Excepciones Personalizadas
Módulo 8: Temas Avanzados
- Decoradores
- Generadores
- Administradores de Contexto
- Concurrencia: Hilos y Procesos
- Asyncio para Programación Asíncrona
Módulo 9: Pruebas y Depuración
- Introducción a las Pruebas
- Pruebas Unitarias con unittest
- Desarrollo Guiado por Pruebas
- Técnicas de Depuración
- Uso de pdb para Depuración
Módulo 10: Desarrollo Web con Python
- Introducción al Desarrollo Web
- Fundamentos del Framework Flask
- Construcción de APIs REST con Flask
- Introducción a Django
- Construcción de Aplicaciones Web con Django
Módulo 11: Ciencia de Datos con Python
- Introducción a la Ciencia de Datos
- NumPy para Computación Numérica
- Pandas para Manipulación de Datos
- Matplotlib para Visualización de Datos
- Introducción al Aprendizaje Automático con scikit-learn