Bird
Raised Fist0
Goprogramming~5 mins

Recover usage in Go - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the recover function in Go?

recover is used to regain control of a panicking goroutine. It allows a program to handle a panic and continue running instead of crashing.

Click to reveal answer
beginner
Where must recover be called to successfully catch a panic?

recover must be called inside a deferred function. If called outside a deferred function, it will not stop the panic.

Click to reveal answer
beginner
What happens if recover is called and there is no panic?

If recover is called when there is no panic, it returns nil and does nothing else.

Click to reveal answer
intermediate
Explain the relationship between panic, defer, and recover in Go.

panic stops normal execution and starts panicking. defer functions run even during panic. Inside a deferred function, recover can catch the panic and stop the program from crashing.

Click to reveal answer
beginner
Show a simple Go code snippet that uses recover to handle a panic.
func safeDivide(a, b int) int {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()
    return a / b
}
Click to reveal answer
What does recover return when called during a panic?
ABoolean true
BThe value passed to panic
CAn error object
DAlways nil
Where should recover be placed to catch a panic?
AInside a deferred function
BAnywhere in the code
CInside the main function only
DInside a goroutine only
What happens if a panic is not recovered?
AProgram crashes and prints stack trace
BProgram continues normally
CProgram silently ignores panic
DProgram restarts automatically
Which keyword is used to delay execution of a function until the surrounding function returns?
Arecover
Bpanic
Cdefer
Dgo
Can recover stop a panic if called outside a deferred function?
AYes, always
BOnly if panic is recent
COnly inside main function
DNo, it returns nil and does nothing
Describe how to use recover to handle a panic in Go.
Think about how defer and recover work together.
You got /4 concepts.
    Explain the flow of a Go program when a panic occurs and is recovered.
    Focus on panic, defer, and recover sequence.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the recover function in Go?
      easy
      A. To handle errors returned by functions
      B. To start a new goroutine
      C. To pause the execution of a function
      D. To catch a panic and prevent the program from crashing

      Solution

      1. Step 1: Understand panic and recover

        Panic causes a program to stop immediately unless recovered.
      2. Step 2: Role of recover

        Recover catches the panic inside a deferred function to keep the program running.
      3. Final Answer:

        To catch a panic and prevent the program from crashing -> Option D
      4. Quick Check:

        recover catches panic = A [OK]
      Hint: Recover catches panics only inside deferred functions [OK]
      Common Mistakes:
      • Thinking recover handles normal errors
      • Using recover outside deferred functions
      • Confusing recover with panic
      2. Which of the following is the correct way to use recover in Go?
      easy
      A. Call recover directly inside the main function
      B. Call recover inside a deferred function
      C. Call recover inside a goroutine
      D. Call recover after a panic has finished

      Solution

      1. Step 1: Identify recover usage rules

        Recover must be called inside a deferred function to catch panics.
      2. Step 2: Analyze options

        Only Call recover inside a deferred function calls recover inside a deferred function.
      3. Final Answer:

        Call recover inside a deferred function -> Option B
      4. Quick Check:

        recover inside defer = B [OK]
      Hint: Always use recover inside defer to catch panics safely [OK]
      Common Mistakes:
      • Calling recover directly without defer
      • Calling recover after panic ends
      • Using recover in goroutines without defer
      3. What will be the output of this Go program?
      package main
      import "fmt"
      func main() {
          defer func() {
              if r := recover(); r != nil {
                  fmt.Println("Recovered from panic:", r)
              }
          }()
          panic("something went wrong")
          fmt.Println("This will not print")
      }
      medium
      A. Recovered from panic: something went wrong
      B. something went wrong
      C. This will not print
      D. Program crashes with panic message

      Solution

      1. Step 1: Understand defer and recover behavior

        The deferred function runs after panic starts, calling recover to catch it.
      2. Step 2: Output analysis

        Recover prints the panic message, so output is "Recovered from panic: something went wrong".
      3. Final Answer:

        Recovered from panic: something went wrong -> Option A
      4. Quick Check:

        defer + recover prints panic message = C [OK]
      Hint: Recover prints panic message inside deferred function [OK]
      Common Mistakes:
      • Expecting code after panic to run
      • Thinking panic message prints directly
      • Ignoring deferred recover function
      4. What is wrong with this Go code snippet?
      func main() {
          recover()
          panic("error")
      }
      medium
      A. panic() cannot be called without defer
      B. panic() must be called before recover()
      C. recover() is called outside a deferred function and will not catch panic
      D. recover() cannot be called in main function

      Solution

      1. Step 1: Check recover usage

        Recover only works inside deferred functions to catch panics.
      2. Step 2: Analyze code

        Recover is called directly, so it won't catch the panic, causing program to crash.
      3. Final Answer:

        recover() is called outside a deferred function and will not catch panic -> Option C
      4. Quick Check:

        recover outside defer = no panic catch = D [OK]
      Hint: Recover must be inside defer to catch panic [OK]
      Common Mistakes:
      • Calling recover directly without defer
      • Assuming recover catches panic anytime
      • Misunderstanding panic and recover order
      5. You want to safely handle panics in a function that divides two numbers and returns the result. Which code snippet correctly uses recover to avoid crashing when dividing by zero?
      hard
      A. func safeDivide(a, b int) int { defer func() { if r := recover(); r != nil { fmt.Println("Recovered from panic") } }() return a / b }
      B. func safeDivide(a, b int) int { if b == 0 { recover() } return a / b }
      C. func safeDivide(a, b int) int { return a / b defer recover() }
      D. func safeDivide(a, b int) int { defer recover() return a / b }

      Solution

      1. Step 1: Identify correct recover usage

        Recover must be called inside a deferred anonymous function to catch panics.
      2. Step 2: Analyze options

        Only func safeDivide(a, b int) int { defer func() { if r := recover(); r != nil { fmt.Println("Recovered from panic") } }() return a / b } uses defer with an anonymous function calling recover properly.
      3. Final Answer:

        func safeDivide(a, b int) int { defer func() { if r := recover(); r != nil { fmt.Println("Recovered from panic") } }() return a / b } -> Option A
      4. Quick Check:

        defer func with recover = safe panic handling = A [OK]
      Hint: Use defer with anonymous func calling recover to catch panics [OK]
      Common Mistakes:
      • Calling recover without defer
      • Calling recover outside anonymous function
      • Placing defer after return statement
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard