兄弟連區塊鏈培訓Go語言panic和recover(捕獲異常)

來源:互聯網
上載者:User

  隨著區塊鏈引發的“顛覆風暴”,大量區塊鏈培訓機構應運而生。但在魚龍混雜的培訓圈內,要想找到真正符合標準的課程體系與專屬區塊鏈領域的專業授課講師簡直是滄海一粟。兄弟連教育指出,是時候做出行動改變並顛覆傳統培訓機構運營思維,並提醒福士使用者,應理性選擇區塊鏈培訓機構。

func panic(interface{})和func recover() interface{}是Golang中用於錯誤處理的兩個函數。


panic的作用就是拋出一條錯誤資訊,從它的參數類型可以看到它可以拋出任意類型的錯誤資訊。在函數執行過程中的某處調用了panic,則立即拋出一個錯誤資訊,同時函數的正常執行流程終止,但是該函數中panic之前定義的defer語句將被依次執行。之後該goroutine立即停止執行。


recover()用於將panic的資訊捕捉。recover必須定義在panic之前的defer語句中。在這種情況下,當panic被觸發時,該goroutine不會簡單的終止,而是會執行在它之前定義的defer語句。


下面是一個簡單的例子:


-->捕捉自己設定的panic錯誤:


package main


import "fmt"

import "math"


func foo(a int) {

defer fmt.Println("foo退出來了")


    defer func() {


        if r := recover(); r != nil {

fmt.Printf("捕獲到的錯誤:%s\n", r)

        }

    }()


    if a < 0 {


panic("必須輸入大於0的數")

    }


fmt.Println("該數的方根為:", math.Sqrt(float64(a)))


}


func main() {


    var a int

    a = 10

    fmt.Printf("a=%d\n", a)

    foo(a)


    var b int

    b = -10

    fmt.Printf("b=%d\n", b)

    foo(b)


fmt.Println("該goroutine還可以執行")

}

// ///////////

a=10

該數的方根為:3.1622776601683795

foo退出來了

b=-10

捕獲到的錯誤:必須輸入大於0的數

foo退出來了

該goroutine還可以執行


Process finished with exit code 0


----


-->捕捉go語言內部的Panic錯誤:


package main


import "fmt"


func foo() {


    defer func() {


        if r := recover(); r != nil {

fmt.Printf("捕獲到的錯誤:%s\n", r)

        }

    }()


    var a, b int


    a, b = 1, 1

    c := 3/(a-b)

    fmt.Println(a, b, c)


}


func main() {

    foo()

}


//====

捕獲到的錯誤:runtime error: integer divide by zero

"

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.