Golang中Goroutine 的错误恢复及代码示例

在Goroutine中,可以使用recover()函数捕获异常并进行恢复。recover()函数必须在defer语句中调用,它会返回发生的异常信息。如果没有发生异常,则返回nil。当发生异常时,Goroutine并不会直接中止,而是先执行defer语句,如果其中包含了recover()函数,就可以通过捕获异常信息进行错误恢复。

以下是一个示例代码:

func main() {
    go func() {
        defer func() {
            if r := recover(); r != nil {
                log.Println("Recovered:", r)
            }
        }()
        panic("Oops!")
    }()
    time.Sleep(1 * time.Second)
}

在上面的代码中,我们启动了一个Goroutine,其中包含了一个panic语句。在panic之后,我们通过defer语句调用了recover()函数来捕获异常并进行恢复。在输出日志后,程序会继续执行,不会因为异常而中止。