- 宕機後的所有語句不會執行,但是會執行宕機前的defer語句,recover 捕獲宕機錯誤
package main
import "fmt"
func main() {
defer fmt.Println("1111")
defer func() {
err := recover()
fmt.Println("err is ", err)
}()
panic("panic")
}
- 發生異常時函數獲取返回值,主函數callFunc沒有指定返回值的變量時無法獲取返回值內容
package main
import "fmt"
func callPanic() (a int) {
defer fmt.Println("1111")
defer func() {
if info := recover(); info != nil {
a = 1
} else {
a = 2
}
}()
panic("panic")
}
func main() {
fmt.Println(callPanic())
}