golang怎样捕捉毛病_后端开发

golang怎样捕捉毛病_后端开发

后端开发2019-12-15 2:50170ki4网

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怎样捕捉毛病的细致内容,更多请关注ki4网别的相干文章!

炫龙网络 Copyright ©  本站由阿里云强力驱动
golang怎样捕捉毛病_后端开发