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.