golang panic,defer,recover

參考:https://studygolang.com/articles/4108golang

 

defer能夠單獨處理err函數

panic與recover和defer一塊兒使用import

 

package main

import "fmt"

func main() {
    defer func() { // 必需要先聲明defer,不然不能捕獲到panic異常
        fmt.Println("c")
        if err := recover(); err != nil {
            fmt.Println(err) // 這裏的err其實就是panic傳入的內容,55
        }
        fmt.Println("d")
    }()
    f()
}

func f() {
    fmt.Println("a")
    panic(55)
    fmt.Println("b")     //不運行
    fmt.Println("f")  //不運行
}
結果:

a
c
55
d原理

 

原理:im

  1.首先定義defer,注意defer是執行某個函數 defer func(){} ()異常

    recover定義在defer中di

  2.在另外的函數中必須用panic(err) -----這個err能夠是任意的值,如panic(333) panic(err) panic("dffd")co

  3.在defer函數中會捕獲這個err,這個err就是panic中的errps

相關文章
相關標籤/搜索