Mensajes de error personalizados
Utiliza #[msg("...")] en las variantes de enumeración de errores para mensajes predeterminados. Los clientes mapean los códigos de error a texto localizado utilizando el IDL.
Busca en todas las páginas de la documentación
Utiliza #[msg("...")] en las variantes de enumeración de errores para mensajes predeterminados. Los clientes mapean los códigos de error a texto localizado utilizando el IDL.
#[error_code]
pub enum SwapError {
#[msg("La tolerancia al deslizamiento ha excedido")]
SlippageExceeded,
#[msg("El pool está deshabilitado")]
PoolDisabled,
}Cuándo usar esto: Cuando distribuyes dApps dirigidas a usuarios que muestran fallos del programa.
#[error_code]
pub enum StakeError {
#[msg("La cantidad de stake está por debajo del mínimo")]
BelowMinimum,
#[msg("El período de desbloqueo no ha transcurrido")]
StillLocked,
}
// Errores de restricción
#[account(constraint = !pool.disabled @ SwapError::PoolDisabled)]
pub pool: Account<'info, Pool>,Lo que esto demuestra:
constraint @ se mapea a la varianteGenera tablas de búsqueda de errores a partir del IDL en TypeScript. Muestra error.errorCode + mensaje mapeado en la UI.
No renumere las variantes de error a la ligera; los clientes almacenan en caché los mapeos.
msg - No se admite dinámicamente. Solución: Usa eventos para obtener detalles.| Alternativa | Usar cuándo | No usar cuándo |
|---|---|---|
| Eventos para contexto de fallo | Detalles enriquecidos | Mensajes de usuario simples |
| Metadatos de error fuera de cadena | Tablas de localización | Códigos canónicos en cadena |
Códigos personalizados en el IDL más cadenas #[msg].
emit_cpi! cuesta más CU pero mejora la fiabilidad de la captura.
Evitar excepto detrás de indicadores de características.
Desde el IDL a través de Anchor o la generación de código de Codama.
Sí, los tipos #[event] se enumeran.
Sí, con @ MyError::Variant.
Cada línea de registro y cadena formateada.
anchor test esperando códigos de error.
Sí, pero no un contrato de API; usa eventos.
Ver Relacionados para mensajes de error.
Versiones de la pila: Esta página se escribió para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 19 jul 2026