Control de Excepciones en Python: Estructuras y Sintaxis para el Manejo de Errores

El manejo de excepciones es un mecanismo fundamental en Python para gestionar situaciones inesperadas durante la ejecución de un programa, evitando que la aplicación finalice de forma abrupta. A continuación, se detallan las dos estructuras principales para capturar y procesar errores de manera profesional.

1. Captura de múltiples tipos de excepción específicos

Esta estructura se utiliza cuando conocemos los errores potenciales que un bloque de código puede generar y queremos darles un tratamiento controlado. Es posible agrupar varios tipos de excepciones en una tupla.

try:
    # Código propenso a errores
    resultado = 10 / int(input("Introduce un divisor: "))
except (ZeroDivisionError, ValueError) as error:
    # Bloque de tratamiento para las excepciones especificadas
    print(f"Se ha detectado un error específico: {error}")

2. Captura genérica mediante la clase Exception

Cuando no se puede predecir con exactitud el tipo de fallo o se desea una red de seguridad global, se utiliza la clase base Exception. Esta capturará casi cualquier error que ocurra dentro del bloque try.

try:
    # Operación de riesgo
    archivo = open("configuracion.log", "r")
    contenido = archivo.read()
except Exception as e:
    # Captura cualquier excepción que herede de la clase Exception
    print(f"Ha ocurrido un error inesperado: {type(e).__name__} - {e}")

Ejemplo práctico de implmeentación

En el siguiente fragmento de código, se observa cómo fluye la ejecución cuando se implementan estos bloques protectores en diferentes escenarios de error.

def procesar_datos(lista, indice):
    print("--- Inicio de la operación ---")
    try:
        # Intento de acceso y división
        valor = lista[indice]
        calculo = 100 / valor
        print(f"Resultado del cálculo: {calculo}")
    except (IndexError, ZeroDivisionError) as err:
        print(f"Error de validación de datos: {err}")
    except Exception as general:
        print(f"Error imprevisto: {general}")
    print("--- Operación finalizada con éxito controlado ---")

# Caso 1: Error de división por cero
procesar_datos([10, 0, 5], 1)

# Caso 2: Error de índice fuera de rango
procesar_datos([1, 2, 3], 10)

En el primer caso, el intérprete detecta la división por cero y salta inmediatamente al bloque except correspondiente. En el segundo caso, al intentar acceder a un índice que no existe en la lista, se captura la excepción IndexError. En ambos escenarios, el programa continúa su ejecución normal después del bloque try-except.

Etiquetas: Python exception-handling try-except error-management

Publicado el 7-2 21:47