Noções básicas de tratamento de erros
10 exemplos para começar com Erros e Logs - 7 básicos e 3 intermediários.
Busque em todas as páginas da documentação
10 exemplos para começar com Erros e Logs - 7 básicos e 3 intermediários.
ProgramResult de Rust para Solana.Instruções retornam Result<(), ProgramError>.
use solana_program::entrypoint::ProgramResult;
pub fn handler() -> ProgramResult { Ok(()) }? em helpers.O runtime fornece códigos de erro padrão.
return Err(ProgramError::InvalidArgument);Códigos u32 específicos do domínio.
return Err(ProgramError::Custom(6001));From impl estilo thiserror.
impl From<MyError> for ProgramError {
fn from(e: MyError) -> Self { ProgramError::Custom(e as u32) }
}?.Nunca faça unwrap em caminhos de input do usuário.
// BAD: data[0]; // GOOD: data.get(0).ok_or(...)?Propague falhas do callee.
invoke(&ix, accounts)?;Tx falha com código nos metadados.
// off-chain: parse logs + err codeAtributo error_code no 0.32.1.
#[error_code]
pub enum Error { InsufficientFunds }Relacionado: Enums de erro customizados
msg curto para debug - atenção ao CU.
solana_program::msg!("reject: insufficient");Relacionado: Logging com msg!
Combine código Custom com enum.
// TS: parse simulation errRelacionado: Decodificando erros off-chain
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.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026