Python Tutorials

Dominando el Manejo de Excepciones en Python

Spread the love

El manejo de excepciones es un componente crítico de la programación robusta en Python. Permite gestionar con elegancia los errores que puedan surgir durante la ejecución del programa, previniendo bloqueos y proporcionando a los usuarios información útil. Este tutorial profundiza en los conceptos fundamentales del manejo de excepciones en Python.

Tabla de Contenidos

  1. try…except
  2. raise Exception
  3. try…finally
  4. Excepciones Integradas Comunes
  5. Creando Excepciones Personalizadas

1. try…except

El bloque try...except es la base del manejo de excepciones. El código que pueda generar una excepción se coloca dentro del bloque try. Si ocurre una excepción, se ejecuta el bloque except correspondiente.


try:
    result = 10 / 0  # Esto generará un ZeroDivisionError
except ZeroDivisionError:
    print("Error: ¡División por cero!")
except TypeError:
    print("Error: Falta de coincidencia de tipo")
except Exception as e:  # Captura cualquier otra excepción
    print(f"Ocurrió un error inesperado: {e}")
else:  # Bloque else opcional, se ejecuta si no ocurre ninguna excepción
    print(f"Resultado: {result}")
finally:  # Bloque finally opcional, siempre se ejecuta
    print("Esto siempre se ejecuta.")

Este ejemplo demuestra cómo manejar un ZeroDivisionError. Se pueden usar múltiples bloques except para manejar diferentes tipos de excepciones. El bloque else opcional se ejecuta solo si no ocurre ninguna excepción en el bloque try. El bloque finally, también opcional, siempre se ejecuta, ideal para tareas de limpieza como el cierre de archivos.

2. raise Exception

La sentencia raise permite generar excepciones explícitamente, señalando errores o condiciones excepcionales.


def validate_age(age):
    if age < 0:
        raise ValueError("La edad no puede ser negativa")
    elif age > 120:
        raise ValueError("La edad es irrealmente alta")
    return age

try:
    age = validate_age(-5)
    print(f"Edad válida: {age}")
except ValueError as e:
    print(f"Error: {e}")

Aquí, validate_age genera un ValueError si la edad es inválida. Puedes generar cualquier excepción integrada o crear las tuyas propias (clases que heredan de Exception).

3. try…finally

El bloque finally asegura que el código dentro de él siempre se ejecute, independientemente de las excepciones. Es esencial para la limpieza.


file = None
try:
    file = open("my_file.txt", "r")
    content = file.read()
    print(content)
except FileNotFoundError:
    print("¡Archivo no encontrado!")
finally:
    if file:
        file.close()
    print("Archivo cerrado.")

Esto garantiza que el archivo se cierre incluso si ocurre un FileNotFoundError, previniendo fugas de recursos.

4. Excepciones Integradas Comunes

Python ofrece numerosas excepciones integradas:

  • ZeroDivisionError: División por cero.
  • TypeError: Tipo inapropiado para una operación.
  • ValueError: Tipo correcto, valor inapropiado.
  • FileNotFoundError: Archivo no encontrado.
  • IndexError: Índice fuera de rango.
  • KeyError: Clave no encontrada en un diccionario.
  • ImportError: Error de importación.
  • NameError: Nombre no encontrado.

5. Creando Excepciones Personalizadas

Para un manejo de errores más específico, crea excepciones personalizadas subclasificando la clase Exception:


class InvalidInputError(Exception):
    pass

def process_data(data):
    if not data:
        raise InvalidInputError("Los datos no pueden estar vacíos")
    # ...resto del procesamiento de datos...

try:
    process_data("")
except InvalidInputError as e:
    print(f"Error Personalizado: {e}")

Esto permite un manejo de errores más granular y una mejor legibilidad del código.

El manejo efectivo de excepciones es vital para escribir programas Python robustos y fiables. Al anticipar y manejar con elegancia los errores potenciales, se crean aplicaciones más resistentes y fáciles de usar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *