> golang-error-handling

Standards for error wrapping, checking, and definition in Golang. Use when wrapping errors, defining sentinel errors, or handling errors idiomatically in Go. (triggers: **/*.go, error, fmt.errorf, errors.is, errors.as)

fetch
$curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/golang-error-handling?format=md"
SKILL.mdgolang-error-handling

Golang Error Handling Standards

Priority: P0 (CRITICAL)

Principles

  • Errors are Values: Handle them like any other value.
  • Handle Once: Log OR Return. Never Log AND Return (creates duplicate logs).
  • Add Context: Don't just return err bubble up. Wrap it with context: fmt.Errorf("failed to open file: %w", err).
  • Use Standard Lib: Go 1.13+ errors package (Is, As, Unwrap) is sufficient. Avoid pkg/errors (deprecated).

Guidelines

  • Sentinel Errors: Expoted, fixed errors (io.EOF, sql.ErrNoRows). Use errors.Is(err, io.EOF).
  • Error Types: Structs implementing error. Use errors.As(err, &target).
  • Panic: Only for unrecoverable startup errors.

Anti-Patterns

  • Check only not nil: if err != nil { return err } -> Loses stack/context context.
  • String checking: err.Error() == "foo" -> Brittle.
  • Swallowing errors: _ = func() -> Dangerous.

References

┌ stats

installs/wk0
░░░░░░░░░░
github stars341
██████████
first seenMar 17, 2026
└────────────

┌ repo

HoangNguyen0403/agent-skills-standard
by HoangNguyen0403
└────────────

┌ tags

└────────────