entenda interfaces em go de um
Aprenda como identificar e tratar erros de maneira eficaz em aplicações escritas com a linguagem Go.
Por que isso é importante
entenda interfaces em go de um. Aprenda como identificar e tratar erros de maneira eficaz em aplicações escritas com a linguagem Go.
O que é um erro em programação
Erro é comportamento inesperado no fluxo do app.
Pode vir de dado inválido, falha externa ou problema lógico interno.
Go trata erro de forma explícita, sem exception tipo outras linguagens.
Exemplo de erro prático
Imagina e-commerce integrando com API dos Correios pra calcular frete.
API cai? Sistema não consegue valor de envio, falha inesperada.
Pra app não quebrar, precisa tratar erro direito.
Comparando com outras linguagens
Go
Utiliza múltiplos valores de retorno para propagar erros
+ Prós
- • Erros explícitos
- • Sem exceções inesperadas
− Contras
- • Mais verbosidade no código
Python / Java
Utilizam try/catch para capturar exceções
+ Prós
- • Código mais limpo em alguns casos
- • Stack trace útil
− Contras
- • Fácil de ignorar erros
- • Custo de exceções mais alto
Tratando erro com retorno múltiplo
- Passo 1: Crie uma função que retorne dois valores: um resultado
válido e um erro. - Passo 2: Use o comando
errors.Newpara gerar um
erro quando necessário. - Passo 3: No código cliente, verifique se o erro é diferente de
nilantes de acessar o resultado.
Entendendo o nil em Go
Nil em Go é valor nulo pra ponteiro, interface, map, slice e outros tipos.
Verifica se erro é diferente de nil? Identifica se rolou falha no processamento.
Simulando division por zero
Função que divide dois números precisa validar se divisor é zero.
Se for, retorna erro explicativo. Evita falha grave de execução.
Atenção
Em Go, divisão por zero sem validação gera panic e interrompe tudo.
Valida sempre.
Cenário com panic
Erro não tratado? Go pode lançar panic. Interrompe tudo, afeta usuário e integridade do app.
Importante
Evita panic ao máximo. Só usa quando for falha crítica irrecuperável mesmo.
Tratando erros com recover
A função recover() captura panic e continua execução.
Mas usa com cautela, só quando realmente necessário.
Aviso
Usar recover() sem critério mascara bug e compromete segurança do app.
Cuidado.
Erros personalizados com structs
Em Go, dá pra criar erro customizado implementando interface error .
Você carrega mensagem mais informativa e até código de status pra categorizar erro.
Implementando a interface error
Cria struct com campos que você quer e implementa método Error() retornando string formatada.
Pronto, tipo vira erro válido em Go.
Vantagens de erros customizados
Com erro personalizado, você identifica tipo e origem da falha de forma clara.
Facilita tratamento específico em partes diferentes do código.
Usando type assertion com erros
Go deixa verificar tipo de erro em runtime usando type assertion.
Dá pra tratar cada tipo de erro customizado de forma específica.
ErrorIs e ErrorAs
Com errors.Is e errors.As , você compara erro por tipo ou valor.
Amplia muito a forma como erro é manipulado e interpretado.
Melhores práticas no error handling
Trata erro logo após ocorrer, não ignora retorno. Nunca usa panic como controle de fluxo.
Prefere erro bem definido e documentado.
Resumo da abordagem Go
Go incentiva tratamento explícito e controlado de erro.
Resulta em sistema mais previsível, seguro e fácil de manter, mesmo exigindo mais código na prática.
Checklist de Implementação
- Criou funções com múltiplos retornos (valor, erro)
- Tratou erros sempre que diferentes de nil
- Evitou o uso indevido de panic
- Implementou erros personalizados com structs
- Utilizou type assertion para identificar tipos de erro