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íticaslog!()- 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:
Option<T>📦Some(value)cuando todo está bienNonecuando algo falla o no existePerfecto para "encontrado/no encontrado"
assert!(condición, mensaje)⚡Valida condiciones críticas
Si falla, causa panic automático
Ideal para validaciones que nunca deberían fallar
checked_add(),checked_sub()🧮Operaciones matemáticas seguras
Devuelven
Option:Some(result)oNonesi hay overflowPrevienen errores numéricos silenciosos
Operador
?con Option 🎯Si es
Some, continúa con el valorSi es
None, termina la función devolviendoNoneHace el código más limpio
unwrap_or(default)🛡️Proporciona un valor por defecto si es
NoneEvita crashes cuando un valor faltante es aceptable
📋 Cuándo Usar Cada Herramienta:
Option: Para datos que pueden o no existirassert!: Para condiciones que NUNCA deberían ser falsaschecked_*: Para operaciones matemáticas que pueden overflow?: Para propagar "falta de datos" de forma limpiaunwrap_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?

