在 Go 中,Panic 和 Recover 用于异常处理。Panic 用来报告异常,Recover 用来从异常中恢复。Panic 会停止程序执行,抛出一个 interface{} 类型的异常值。Recover 可以从延迟函数或 goroutine 中捕获异常,返回它抛出的 interface{} 类型的异常值。
Go 语言异常处理中的 Panic 和 Recover
在 Go 语言中,panic
和 recover
关键字是异常处理的重要机制。panic
用于报告异常,而 recover
用于从异常中恢复。
Panic
panic
关键字用于报告一个异常条件,它会立即停止程序执行,并打印堆栈信息。使用 panic
时,程序会抛出一个 interface{}
类型的异常值。例如:
package main func main() { panic("发生了异常") }
Recover
recover
关键字用于从 panic
中恢复。它可以从当前 goroutine 返回一个 interface{}
类型的异常值。recover 只能在延迟函数或 goroutine 中使用。例如:
package main import "fmt" func main() { defer func() { if r := recover(); r != nil { fmt.Println("捕获到异常:", r) } }() panic("发生了异常") }
实战案例
假设我们有一个函数 divide
,它计算两个数的商:
func divide(a, b int) float64 { if b == 0 { panic("除数不能为零") } return float64(a) / float64(b) }
为了处理 divide
函数中可能发生的异常,我们可以使用 recover
关键字:
func main() { defer func() { if r := recover(); r != nil { fmt.Println("捕获到异常:", r) } }() fmt.Println(divide(10, 2)) fmt.Println(divide(10, 0)) }
输出:
5 捕获到异常: 除数不能为零
以上是Golang异常处理中的panic和recover的详细内容。更多信息请关注PHP中文网其他相关文章!