Go Error Handling
Route by Need
- •Wrapping errors with context → see wrapping/
- •Defining sentinel errors → see sentinel/
- •Checking error types → see checking/
Quick Check
- • Never ignore errors (_ = fn())
- • Wrap with context at boundaries
- • Use errors.Is/As, not ==
Common Pattern
go
func ProcessFile(path string) error {
f, err := os.Open(path)
if err != nil {
return fmt.Errorf("open %s: %w", path, err)
}
defer f.Close()
if err := parse(f); err != nil {
return fmt.Errorf("parse %s: %w", path, err)
}
return nil
}