0
0
GoConceptBeginner · 3 min read

What is panic in Go: Explanation and Usage

panic in Go is a built-in function that stops normal execution and begins panicking, which unwinds the stack and eventually terminates the program unless recovered. It is used to handle unexpected errors that the program cannot continue from.
⚙️

How It Works

Imagine you are reading a book and suddenly find a page torn that you cannot skip or fix. In Go, panic is like that torn page: it stops the normal flow of the program immediately. When panic is called, Go starts to unwind the current function calls, cleaning up as it goes back through the stack.

This unwinding process is called "panicking." If the program does not catch this panic using a special function called recover, the program will stop and print an error message with the reason for the panic and the stack trace. This helps developers find where the problem happened.

💻

Example

This example shows how panic stops the program and prints an error message.

go
package main

import "fmt"

func main() {
    fmt.Println("Start of program")
    panic("Something went wrong!")
    fmt.Println("This line will not run")
}
Output
Start of program panic: Something went wrong! goroutine 1 [running]: main.main() /path/to/file.go:7 +0x39 exit status 2
🎯

When to Use

Use panic in Go when your program encounters a serious problem that it cannot handle or recover from, such as a critical configuration error or a bug that leaves the program in an invalid state. It is not meant for regular error handling but for unexpected situations where continuing would cause incorrect behavior.

For example, if your program depends on a file that must exist and it is missing, you might use panic to stop immediately rather than continuing with wrong assumptions.

Key Points

  • panic stops normal execution and starts unwinding the stack.
  • It prints an error message and stack trace if not recovered.
  • Use it only for unrecoverable errors, not for normal error handling.
  • Can be caught with recover inside deferred functions to prevent program crash.

Key Takeaways

panic stops the program immediately and unwinds the call stack.
It is used for serious errors that cannot be handled normally.
If not caught by recover, the program crashes with an error message.
Avoid using panic for regular error handling.
Use recover in deferred functions to handle panics gracefully.