Errores

📚 Manejo de errores

🎯 Parte Teórica: Fundamentos del Manejo de Errores

¿Por qué es importante el manejo de errores? 🤔

En los contratos inteligentes de Soroban, el manejo de errores es crítico porque:

  • 🛡️ Seguridad: Evita comportamientos inesperados que podrían ser explotados

  • 💰 Protección de fondos: Previene pérdidas de tokens o activos

  • 🎯 Experiencia del usuario: Proporciona mensajes claros sobre qué salió mal

  • 📊 Debugging: Facilita la identificación y solución de problemas

🔧 Tipos de Errores en Soroban

1. Errores del Sistema (Host Errors) 🏠

Son errores que maneja automáticamente el entorno de Soroban:

  • Falta de memoria

  • Límites de gas excedidos

  • Operaciones matemáticas inválidas (división por cero)

2. Errores Personalizados (Custom Errors) ✨

Son errores que tú defines para tu lógica de negocio:

  • Permisos insuficientes

  • Parámetros inválidos

  • Estados de contrato incorrectos

🛠️ Herramientas para Manejar Errores

Result<T, E> - Tu mejor amigo 🤝

Macros útiles 🎨

  • panic!() - Para errores irrecuperables (¡usar con cuidado!)

  • assert!() - Para validaciones críticas

  • log!() - Para debugging (solo en testnet)

📋 Estrategias de Manejo de Errores

1. Validación Temprana ⚡

Valida todos los parámetros al inicio de la función

2. Errores Específicos 🎯

Crea tipos de error específicos para cada situación

3. Propagación Controlada 📤

Usa ? para propagar errores de forma limpia

4. Logging Inteligente 📝

Registra errores para facilitar el debugging

💡 Ejemplos Prácticos:

🌱 Ejemplo : Contrato Básico SIN Errores Personalizados

Empecemos con algo simple que usa solo los errores que Soroban ya tiene integrados:

🎯 Conceptos Clave de este Ejemplo:

Herramientas Básicas de Manejo de Errores:

  1. Option<T> 📦

    • Some(value) cuando todo está bien

    • None cuando algo falla o no existe

    • Perfecto para "encontrado/no encontrado"

  2. assert!(condición, mensaje)

    • Valida condiciones críticas

    • Si falla, causa panic automático

    • Ideal para validaciones que nunca deberían fallar

  3. checked_add(), checked_sub() 🧮

    • Operaciones matemáticas seguras

    • Devuelven Option: Some(result) o None si hay overflow

    • Previenen errores numéricos silenciosos

  4. Operador ? con Option 🎯

    • Si es Some, continúa con el valor

    • Si es None, termina la función devolviendo None

    • Hace el código más limpio

  5. unwrap_or(default) 🛡️

    • Proporciona un valor por defecto si es None

    • Evita crashes cuando un valor faltante es aceptable

📋 Cuándo Usar Cada Herramienta:

  • Option: Para datos que pueden o no existir

  • assert!: Para condiciones que NUNCA deberían ser falsas

  • checked_*: Para operaciones matemáticas que pueden overflow

  • ?: Para propagar "falta de datos" de forma limpia

  • unwrap_or: Cuando un valor faltante tiene un reemplazo lógico

🏗️ Ejemplo : Contrato Básico con Errores Personalizados

Este ejemplo muestra un contrato simple para gestionar un contador con validaciones:

Lecciones Importantes del Ejemplo :

1. Manejo de Estado Explícito 🎯

2. Validaciones Paso a Paso 🛡️

3. Errores Específicos y Útiles 📋

🎉 Conclusión

El manejo de errores en Soroban es fundamental para crear contratos seguros y confiables. Recuerda:

  • 🎯 Sé específico con tus errores

  • 🛡️ Valida todo lo que puedas

  • 🧪 Prueba todos los escenarios

  • 📝 Documenta tu código

  • 🚀 Itera y mejora continuamente

Last updated

Was this helpful?