Golang 迴圈異常丟擲不影響整個請求

董雷發表於2021-11-09

程式碼案例

func main() {

    fmt.Println("開始------")
    for i:=0;i<10 ;i++  {
        func()  {
            defer func() {
                if err := recover();err != nil{
                    fmt.Println(err)
                }
            }()
            if i == 2{
                panic("2 這裡丟擲異常了----- ")
            }else {
                fmt.Println(i)
            }
        }()
        fmt.Sprintf("測試一下 %v \n",i)
    }
    fmt.Println("結束------")
)

輸出結果

開始------
0
1
2 這裡丟擲異常了----- 
3
4
5
6
7
8
9
結束------

匿名函式後面加()是執行這個函式的意思。所以defer裡面的function後帶(),return 後面不能帶 ()

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章