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,就会停止崩溃的继续。