Go - Error Handling

Beginner 10/10 Teacher 10/10 Architect 10/10

Check Errors

f, err := os.Open("file.txt")
if err != nil { return err }
defer f.Close()

Wrapping and Is/As

if err := do(); err != nil {
  return fmt.Errorf("do failed: %w", err)
}
// later
if errors.Is(err, os.ErrNotExist) { /* handle */ }

Sentinel vs Typed

  • Prefer typed errors with errors.Is/As over string matching.