# panic 与 recover

URL: https://caijiao.org/go/05-utils/06-panic-recover
Source: docs/go/05-utils/06-panic-recover.md
Description: 本节介绍 Go 语言中的 panic 与 recover，用于异常处理和程序恢复。

## 1. panic

`panic` 用于触发运行时错误，导致程序中断执行：

```go
func divide(a, b int) int {
    if b == 0 {
        panic("division by zero")
    }
    return a / b
}
````

## 2. recover

`recover` 用于捕获 panic，实现错误恢复，必须在 `defer` 中调用：

```go
func safeDivide(a, b int) (result int) {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
            result = 0
        }
    }()
    result = divide(a, b)
    return
}
```

## 3. 使用场景

* panic 适用于不可恢复的严重错误
* recover 用于防止程序崩溃，实现容错

---

合理使用 panic 与 recover，提升程序的健壮性。
