主题
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,提升程序的健壮性。