Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Python intermedio para IA, Unidad 5 — Manejo avanzado de errores, 5.2 — Control robusto de errores ·

try/except bien diseñados

try/except bien diseñados

Introducción

En programación, especialmente cuando se trabaja con inteligencia artificial (IA) y ciencia de datos, es crucial manejar los errores de manera eficaz. Los bloques try/except son una herramienta fundamental para controlar excepciones y asegurar que nuestro código sea robusto y funcione como se espera en la mayoría de los casos. A pesar de su importancia, es fácil cometer errores al implementarlos correctamente. Este artículo abordará cómo diseñar bloques try/except efectivos, evitar trampas comunes e incluir una lista de verificación para asegurar que nuestra lógica esté bien estructurada.

Explicación principal

Funcionamiento básico

El bloque try se usa para rodear el código que puede generar excepciones. Si ocurre alguna excepción, el flujo del programa salta al bloque except, donde podemos manejar la excepción y decidir qué hacer a continuación.

try:
    # Código susceptible a errores
    resultado = 10 / 0
except ZeroDivisionError as e:
    print(f"Ha ocurrido un error: {e}")

Ejemplos detallados

Imaginemos que estamos trabajando con datos en formato CSV. Necesitamos leer y procesar estos datos, pero hay una posibilidad de que el archivo no exista o esté corrupto.

import csv

try:
    with open('datos.csv', 'r') as file:
        reader = csv.reader(file)
        for row in reader:
            print(row)
except FileNotFoundError:
    print("El archivo CSV no existe.")
except PermissionError:
    print("No se tiene permiso para abrir el archivo.")
except Exception as e:
    print(f"Ha ocurrido un error inesperado: {e}")

Ejemplo avanzado con múltiples except

Podemos tener varios bloques except para manejar diferentes tipos de excepciones.

try:
    with open('datos.csv', 'r') as file:
        reader = csv.reader(file)
        for row in reader:
            print(row)
except FileNotFoundError:
    print("El archivo CSV no existe.")
except PermissionError:
    print("No se tiene permiso para abrir el archivo.")
except ValueError:
    print("La fila contiene datos inválidos.")
except Exception as e:
    print(f"Ha ocurrido un error inesperado: {e}")

Errores típicos / trampas

  1. Manejo de excepciones innecesarios: A menudo, los programadores capturan excepciones generalistas como Exception sin pensar en las consecuencias. Esto puede ocultar errores más graves y hacer el depurado más complicado.
  1. No manejar la excepción correctamente: Si simplemente imprimimos un mensaje de error y luego dejamos que el programa siga su curso, podríamos estar ignorando problemas graves. Es importante decidir qué hacer después de una interrupción de flujo.
  1. Manejo inadecuado de las excepciones propias: Crear excepciones personalizadas es útil para manejar casos específicos, pero si no se manejan correctamente, pueden hacer que el código sea más difícil de entender y depurar.
  1. Ignorar la lógica del flujo principal: A veces, los bloques try/except son tan grandes que ocultan la lógica del flujo principal. Esto puede dificultar la comprensión y mantenimiento del código.

Checklist accionable

  1. Identifica claramente qué excepciones puedes esperar en el bloque try.
  2. Usa bloques except específicos para manejar cada tipo de error.
  3. Considera usar un bloque general al final para capturar cualquier excepción inesperada.
  4. Evita capturas generales como Exception, excepto en la lógica general.
  5. Maneja las excepciones con cuidado, asegurándote que el programa no se quede colgado o funcione de manera incorrecta.
  6. Documenta claramente qué hace cada bloque except.
  7. Verifica que el flujo del programa sea correcto después de una interrupción.

Cierre

Asegurarse de manejar correctamente las excepciones es crucial para la robustez y la confiabilidad de cualquier aplicación de IA o ciencia de datos. Al seguir este enfoque, puedes evitar muchos problemas y asegurar que tu código funcione como se espera incluso en casos inesperados.

Siguientes pasos

  • Aprende a manejar excepciones personalizadas.
  • Prueba tus bloques try/except con diferentes tipos de errores.
  • Implementa un sistema de logging para capturar información adicional sobre las excepciones.
  • Continúa mejorando tu estilo y prácticas de programación.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).