Skip to content

recover

https://gobyexample-cn.github.io/recover

go
package main

import "fmt"

func mayPanic() {
    panic("a problem")
}

func main() {

    defer func() {
        if r := recover(); r != nil {

            fmt.Println("Recovered. Error:\n", r)
        }
    }()

    mayPanic()

    fmt.Println("After mayPanic()")
}

如果 panic 没有 defer + recover ,那么程序就会一直崩溃,直至程序停止。如果有,那么崩溃会停止,但是发送 panic 后面的代码将不会被执行

任意一个 recover,就会停止崩溃的继续。