面试题答案
一键面试在Go语言中,recover
函数用于在defer函数中捕获并处理运行时异常。以下是如何使用它来避免因除零操作等异常导致程序崩溃的描述及示例:
-
使用方式:
- 在可能出现异常的代码块中,使用
defer
关键字注册一个匿名函数,在这个匿名函数中调用recover
。 - 如果在
defer
之前发生了运行时异常,recover
会捕获到这个异常并返回异常值(如果没有异常则返回nil
),这样就可以对异常进行处理,而不是让程序崩溃。
- 在可能出现异常的代码块中,使用
-
代码示例:
package main
import (
"fmt"
)
func main() {
go func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("捕获到异常:", r)
}
}()
// 这里进行除零操作,会引发运行时异常
result := 1 / 0
fmt.Println("结果:", result)
}()
// 防止主线程退出
select {}
}
在上述代码中,go
关键字开启了一个新的goroutine,在这个goroutine中,defer
注册了一个匿名函数用于捕获异常。当执行到1 / 0
时会引发运行时异常,recover
会捕获到这个异常并打印出异常信息,从而避免整个程序崩溃。select {}
语句用于阻塞主线程,防止程序在goroutine执行完毕前退出。