Golang panic後獲取返回值

  • 宕機後的所有語句不會執行,但是會執行宕機前的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())
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章