面试题答案
一键面试在Go语言中,可以使用panic
函数主动触发一个panic
,并通过defer
和recover
函数来捕获它。defer
语句用于在函数返回之前执行一些清理工作,recover
函数用于捕获panic
并恢复程序的正常执行。
以下是一个简单的代码示例:
package main
import (
"fmt"
)
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
// 在这里进行清理工作
fmt.Println("Performing cleanup...")
}
}()
fmt.Println("Before panic")
panic("This is a test panic")
fmt.Println("After panic") // 这行代码不会被执行
}
在上述代码中:
- 使用
defer
定义了一个匿名函数,这个函数会在main
函数返回之前执行。 - 在匿名函数中,通过
recover
捕获panic
。如果recover
返回的值不为nil
,说明捕获到了panic
,并打印出恢复的信息。 - 在捕获到
panic
后,执行清理工作,例如打印清理信息。 - 在
main
函数中,通过panic
函数主动触发一个panic
,并传递一个字符串作为panic
的原因。panic
之后的代码不会被执行。