panic — unrecoverable crash. error — expected failure.
panic:
1func divide(a, b int) int {2 if b == 0 {3 panic("division by zero") // Crash4 }5 return a / b6}
error:
1func divide(a, b int) (int, error) {2 if b == 0 {3 return 0, errors.New("division by zero")4 }5 return a / b, nil6}78// Handle error9result, err := divide(10, 0)10if err != nil {11 fmt.Println("Error:", err)12}
When to use: