Go · Intermediário · Inglês · Técnico
error wrapping
Técnica de embrulhar um erro dentro de outro, acrescentando contexto, com fmt.Errorf e o verbo %w. O erro original continua acessível por errors.Unwrap, Is e As.
Onde usar
Em cada camada, acrescente o que estava sendo feito, como lendo config, e preserve a causa. Assim os logs contam a história sem perder a checagem de tipo.
Em código
_, err := os.Open("cfg.json")
if err != nil {
return fmt.Errorf("lendo config: %w", err)
}
// errors.Is(err, fs.ErrNotExist) -> trueExemplos
Wrap the error with %w so callers can still inspect it.
Embrulhe o erro com %w para os chamadores ainda poderem inspecioná-lo.
Each layer adds context through error wrapping.
Cada camada acrescenta contexto por meio de error wrapping.
Cuidado
Usar %v em vez de %w perde a ligação com o erro original, e errors.Is e errors.As deixam de encontrá-lo.
Sinônimos
embrulhar erro