Melhores Práticas de Erros e Eventos
Programas Anchor observáveis e depuráveis usam erros tipados, eventos estruturados e registro mínimo.
Como Usar Esta Lista
- Aplique em cada instrução pública antes do mainnet.
- Verifique se o indexador analisa o estilo de emissão escolhido.
- Fixe a tabela de erros da IDL nos repositórios do cliente.
A - Erros
- Use #[error_code] para todas as falhas voltadas para o usuário códigos estáveis na IDL.
- Adicione novas variantes; não reordene preserve os mapeamentos do cliente.
- Mapeie falhas de restrição com @ Variant mensagens específicas.
- Simule transações nos clientes antes de enviar decodifique erros precocemente.
B - Eventos e logs
- Emita eventos para alterações de estado indexáveis não use
msg!em produção. - Escolha
emitvsemit_cpiconsistentemente documente para a equipe do indexador. - Controle logs de depuração com recursos economize CU no mainnet.
- Mantenha payloads de eventos pequenos evite truncamento de log.
FAQs
Formato de erro do Anchor 0.32.1?
Códigos personalizados na IDL mais strings #[msg].
emit! vs emit_cpi!?
emit_cpi! custa mais CU, mas melhora a confiabilidade da captura.
Devo usar msg! no mainnet?
Evite, exceto atrás de flags de recursos.
Como os clientes obtêm códigos de erro?
Da IDL via Anchor ou codegen do Codama.
Os eventos aparecem na IDL?
Sim, os tipos #[event] são listados.
Restrições podem retornar erros personalizados?
Sim, com @ MyError::Variant.
O que usa CU em logging?
Cada linha de log e string formatada.
Como testar erros?
anchor test esperando códigos de erro.
Logs são dados de consenso?
Sim, mas não um contrato de API; use eventos.
Próxima leitura?
Veja Relacionados para bp de erros e eventos.
Relacionados
- Eventos com emit! - eventos
- #[error_code] & require! - erros
- Melhores Práticas de Codegen - sincronização de IDL
Versões da Stack: Esta página foi escrita 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, e LiteSVM 0.6.x.