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 panic for expected errors—prefer returning error.

Practice

  • Wrap a function with recover and log the panic safely.

Quick quiz

  1. When is panic appropriate?
Show answer Programmer errors or truly unrecoverable states—not normal control flow.