面试题答案
一键面试- panic的作用:
panic
用于主动引发运行时错误。当panic
函数被调用时,程序会立即停止当前函数的执行,开始展开(unwind)调用栈,即从当前函数向调用它的函数返回,并依次执行这些函数中的defer
语句,直到程序崩溃,打印出panic
的错误信息。
- recover的作用:
recover
用于在defer
函数中捕获panic
引发的异常。如果recover
在正常的函数调用中(非defer
函数内)调用,它会返回nil
。在defer
函数中调用recover
可以阻止程序崩溃,并获取到panic
传递的错误值,从而进行相应的错误处理。
以下是示例代码:
package main
import (
"fmt"
)
func main() {
test()
}
func test() {
defer func() {
if r := recover(); r != nil {
fmt.Println("捕获到异常:", r)
}
}()
panic("触发异常")
}
在上述代码中,test
函数中使用 panic
触发了一个异常,defer
函数中的 recover
捕获到了这个异常,并打印出了相应的错误信息。