go mysql recover_Go语言中异常处理painc()和recover()的用法
时间: 2024-02-23 19:59:35 浏览: 22
在 Go 语言中,`panic()` 和 `recover()` 是两个用于处理异常的内置函数。
`panic()` 函数用于抛出异常,通常是在程序遇到无法处理的错误时调用。当 `panic()` 函数被调用时,程序会立即停止执行当前函数的其他代码,并开始执行调用栈中的 `defer` 延迟执行函数,然后将控制权交给更高层的调用函数,直到程序完全停止运行或者 `recover()` 函数被调用。
`recover()` 函数用于捕获 `panic()` 函数抛出的异常,并进行处理。当 `recover()` 函数被调用时,它会停止当前函数的 panic 流程,并返回 panic 抛出的值。但是,`recover()` 函数必须在 defer 延迟执行函数中被调用,否则它不会起作用。
下面是一个使用 `panic()` 和 `recover()` 函数处理异常的示例代码:
```go
func test() {
defer func() {
if err := recover(); err != nil {
fmt.Println("捕获到异常:", err)
}
}()
fmt.Println("开始执行")
panic("程序遇到错误")
fmt.Println("结束执行")
}
func main() {
test()
fmt.Println("程序结束")
}
```
输出:
```
开始执行
捕获到异常: 程序遇到错误
程序结束
```
在上面的示例代码中,我们通过 `defer` 延迟执行函数来捕获 `panic()` 函数抛出的异常,并在控制台输出错误信息。由于 `panic()` 函数在第 6 行被调用,所以后面的代码都不会被执行。最终程序在 catch 到异常后会正常结束。