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

  1. Excepciones: Son eventos que ocurren durante la ejecución de un programa y que interrumpen el flujo normal de las instrucciones.
  2. Lanzar Excepciones: Utilizar la palabra clave raise para generar una excepción de manera explícita.
  3. 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:

raise ExceptionType("Mensaje de error")

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 una ValueError 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 una TypeError si el valor no es un entero y una ValueError si el valor es negativo.
  • En el bloque try, intentamos procesar el valor -5, lo que lanza una ValueError.
  • 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

Módulo 2: Estructuras de Control

Módulo 3: Funciones y Módulos

Módulo 4: Estructuras de Datos

Módulo 5: Programación Orientada a Objetos

Módulo 6: Manejo de Archivos

Módulo 7: Manejo de Errores y Excepciones

Módulo 8: Temas Avanzados

Módulo 9: Pruebas y Depuración

Módulo 10: Desarrollo Web con Python

Módulo 11: Ciencia de Datos con Python

Módulo 12: Proyecto Final

© Copyright 2024. Todos los derechos reservados