Pular para o conteúdo
Tecnologia

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

  1. Passo 1: Crie uma função que retorne dois valores: um resultado
    válido e um erro.
  2. Passo 2: Use o comando errors.New para gerar um
    erro quando necessário.
  3. Passo 3: No código cliente, verifique se o erro é diferente de nil antes 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