在Golang中,我们可以使用log包来记录日志。要捕获异常,我们可以使用recover函数。recover函数可以捕获当前goroutine中的panic,并返回传递给panic的值。通常,我们可以在defer语句中使用recover来捕获异常。
下面是一个简单的示例,展示了如何在Golang中捕获异常:
package main
import (
"log"
"os"
)
func main() {
defer func() {
if r := recover(); r != nil {
log.Printf("捕获到异常: %v\n", r)
os.Exit(1)
}
}()
// 这里是我们的业务逻辑
causePanic()
}
func causePanic() {
panic("发生了一个错误")
}
在这个示例中,我们在main函数中使用defer语句调用了一个匿名函数,该匿名函数使用recover捕获异常。当causePanic函数触发panic时,recover会捕获到这个异常,并将其记录到日志中。然后,程序会正常退出。
需要注意的是,recover只能捕获当前goroutine中的panic。如果你需要在其他goroutine中捕获异常,你需要在该goroutine内部使用recover。此外,recover只能在defer语句中使用,因为它需要在panic发生后立即执行。