Go — Erros como valor

TL;DR

Galho 4 da trilha Go — o modelo de tratamento de erros que dispensa exceções. 8 notas em 3 fases: o tipo error, criação e comparação de erros (Iniciado); wrapping e a cadeia de erros, erros customizados e o par panic/recover (Adepto); estratégias de tratamento, o contraste com exceções e padrões usados em produção (Magus). Ao fim, você trata erro como valor de retorno explícito — não como fluxo de controle escondido.

Aqui o Go mostra outra aposta central de design: erro é valor, não exceçãoif err != nil é o idioma, não um smell, e panic/recover existe para falhas irrecuperáveis, não para controle de fluxo comum. Ver roadmap pro estado das notas.

Notas por fase

Iniciado — o contrato básico

  1. 01 - Erros são valores — o tipo error — a interface error, if err != nil, por que Go rejeitou exceções
  2. 02 - Criando e comparando erroserrors.New, fmt.Errorf, erros sentinela, comparação por igualdade

Adepto — construindo a cadeia

  1. 03 - Error wrapping e a cadeia de erros%w, errors.Is, errors.Unwrap, preservando contexto
  2. 04 - Erros customizados — tipos de erro próprios, errors.As, erros com dados estruturados
  3. 05 - panic e recover — quando entrar em pânico, recuperação, o limite entre erro e falha fatal

Magus — julgamento em produção

  1. 06 - Estratégias de tratamento de erro — onde tratar, onde propagar, logging vs retorno, erros de borda
  2. 07 - Erros vs exceções — comparação com Java/Python/JS, trade-offs da explicitação
  3. 08 - Padrões de erro em produção — sentinelas de pacote, erros de domínio, observabilidade de falhas

Veja também

  • Trilha Go — índice geral (21 galhos + capstone)
  • Galho anterior: Interfaces e composição
  • Próximo galho: Coleções e dados (galho 5) — slices, maps e as estruturas de dados idiomáticas de Go