面试题答案
一键面试panic的使用场景
- 程序遇到不可恢复的错误:例如在解析配置文件时,配置文件格式严重错误,无法继续正常运行程序,就可以使用
panic
终止当前 goroutine。 - 在运行时检测到不应该出现的条件:比如函数内部发现传入了一个不可能出现的参数值,此时可以使用
panic
。
recover的使用场景
recover
用于捕获 panic
,将程序从 panic
状态中恢复,使程序能够继续运行,通常用于延迟函数 (defer
) 中。
示例代码
package main
import (
"fmt"
)
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
testPanic()
fmt.Println("After testPanic")
}
func testPanic() {
panic("This is a test panic")
}
在上述代码中,testPanic
函数引发了一个 panic
,main
函数中的延迟函数捕获到了这个 panic
,并进行了恢复,因此程序不会崩溃,还能继续执行 fmt.Println("After testPanic")
这行代码。