Go - Defer / Panic / Recover
Beginner 10/10
Teacher 10/10
Architect 10/10
Try it: Open a file and
defer its Close(); deliberately trigger an error and ensure the file is closed.defer
f, _ := os.Open("file")
defer f.Close()
panic/recover
func safe(){
defer func(){ if r := recover(); r != nil { fmt.Println("recovered", r) } }()
panic("boom")
}
Prefer explicit errors over panic except for programmer bugs (e.g., impossible states).
Common errors
- Using
panicfor expected errors—prefer returningerror.
Practice
- Wrap a function with
recoverand log the panic safely.
Quick quiz
- When is
panicappropriate?