Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Básico sobre erro
  2. Erro customizado

Em qualquer aplicação é necessário o gerenciamento de erros para registro de log, exibição de mensagem amigável e outros.

Ex 1:
"campo deve ser preenchido"
"valor inválido"
"erro ao abrir arquivo"

Em Go, assim como em outras linguagens, uma função nativa ou função do usuário pode retornar um valor de erro quando necessário.

Ex 2:
func nome_funcao(<parametros>) (tipo_retorno, error){

   if(/*condicao*/){
     return valor_retorno,nil  //OK
   }

  return valor_retorno, nome_erro() //ERRO
}

O retorno da função deve ser validado para exibição de uma mensagem amigável ao usuário do aplicativo:

 valor_retorno, erro := nome_funcao(/*argumentos*/)
if (erro != nil){ 
    //OK
}else{
    //ERRO
}

No exemplo mais simples abaixo, vamos abrir um arquivo inexistente fazendo uso o método ReadFile que pertence ao package os. Esse método irá retornar um error que é capturado pela variável erro:

Ex 3:
package main
import "fmt"
import "os"

func main() {
    _, erro := os.ReadFile("arq.txt") //_ descarte

    if (erro != nil){ //validação
        fmt.Print("Erro:", erro)
    }else{
        fmt.Print("Ok")
    }
}
Saída
Erro:open arq.txt: no such file or directory

Go permite a criação de erros customizados do usuário, utilizando struct ou não, e também a validação básica dos tipos de erro com os métodos errors.Is e errors.As como pode ser visto no exemplo a seguir.

Ex 4:
func MeuErro() error{
     return errors.New("minha mensagem de erro")
}
Ex 5:
   if(errors.Is(erro,ErroArgInvalido)){ //validação com erros.Is
        fmt.Print("ArgumentoInvalido")

Podemos também gerenciar erros com funções customizadas utilizando Defer, Panic e Recover além da possibilidade de logar erros utilizando o package log. Esses assuntos mencionados serão discutidos nas próximas seções do tutorial.

  1. 03/07/2026 - revisão 2 - Ajustes: objetivos, 'Erro customizado'; outros ajustes pontuais
  2. 09/09/2025 - revisão 1 - Ajustes: pontuais
  3. 07/04/2025 - versão inicial