Como o Golang Trata Erros

Jul 3, 2024

Como o Golang Trata Erros

Introdução

  • Palestrante: Wesley Willians
  • Tema: Tratamento de erros no Golang
  • Objetivo: Entender como o Golang trabalha com erros para criar aplicações mais resilientes.

Importância do Tratamento de Erros no Golang

  • Erro como Cidadão de Primeira Classe: No Golang, erros são tratados como elementos centrais nas funções.
  • Expressividade do Erro: A abordagem do Golang em relação aos erros muda a forma como os desenvolvedores programam no dia a dia.

Pedidos Iniciais

  • Interação: Curtir o vídeo e se inscrever no canal para receber notificações de novos vídeos.
  • Utilizar Playlist: Há uma playlist no canal dedicada ao Golang.

Diferença do Golang em Relação a Outras Linguagens

  • Conceito de try-catch: Diferente de muitas linguagens que utilizam try-catch para tratar erros de forma genérica.
  • Tratamento Explícito de Erros: Em Golang, erros são retornados como valores adicionais em funções.
  • Importância do Tratamento Granular: Cada erro deve ser tratado de forma específica e granular.

Estrutura das Funções em Golang

  • Retorno de Vários Valores: Funções podem retornar múltiplos valores, incluindo um valor de erro.
  • Padrão Comum: Retorno de resposta e erro (response, err).
  • **Verificação de Erros: ** Usando if err != nil para tratar erros.

Exemplo Prático: Requisição HTTP

response, err := http.Get("http://google.com.br")
if err != nil {
    log.Fatalf("Erro ao fazer comunicação: %v", err)
}
fmt.Println(response.Header)
  • Caso de Erro: Mudança na URL para um domínio inexistente mostra como o erro é capturado.

Criando Funções com Retorno de Erro

Exemplo de Função de Soma

func soma(x int, y int) (int, error) {
    if x + y > 10 {
        return 0, errors.New("Total maior que 10")
    }
    return x + y, nil
}

Chamada da Função

resultado, err := soma(8, 3)
if err != nil {
    log.Fatalf("Erro: %v", err)
}
fmt.Println(resultado)

Opção de Ignorar Erros

  • Uso do “Blank Identifier”: Substituir a variável de erro por _ para ignorar o erro.
_, err := soma(5, 7)
  • Consequências: Ignorar erros pode levar a comportamentos inesperados.

Conclusão

  • Tratar Erros é Essencial: Golang exige atenção especial ao tratamento de erros.
  • Recomendação: Adaptar-se à abordagem do Golang ou considerar outra linguagem.
  • Interação Final: Curtir e inscrever no canal.