首頁  >  文章  >  後端開發  >  golang如何捕捉錯誤

golang如何捕捉錯誤

(*-*)浩
(*-*)浩原創
2019-12-14 13:19:023397瀏覽

golang如何捕捉錯誤

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

panic的作用就是拋出錯誤訊息,從它的參數類型可以看到它可以拋出任意類型的錯誤訊息。  (建議學習:go

在函數執行過程中的某處呼叫了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

以上是golang如何捕捉錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn