面试题答案
一键面试panic函数作用
panic
函数用于主动抛出一个运行时错误,终止当前函数的执行,并开始展开调用栈。当panic
发生时,程序会立即停止正常执行流程,打印错误信息,并反向遍历调用栈,直至程序崩溃并输出栈跟踪信息。
recover函数作用
recover
函数用于在defer
函数中捕获由panic
抛出的错误,从而避免程序崩溃。它只能在defer
函数中使用,若当前没有panic
发生,调用recover
会返回nil
。
示例代码
package main
import (
"fmt"
)
func main() {
// 调用可能会panic的函数,并使用defer和recover来捕获异常
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
testPanic()
fmt.Println("This line will not be printed if panic is not recovered")
}
func testPanic() {
// 模拟一个错误情况,抛出panic
panic("This is a panic")
}
在上述示例中,testPanic
函数使用panic
抛出了一个错误。main
函数中通过defer
注册了一个匿名函数,该匿名函数中使用recover
捕获了panic
,使得程序不会崩溃,并输出了错误信息。如果没有recover
,程序会直接崩溃并输出panic
的错误信息和调用栈。