golang如何捕获错误

互联网 19-12-14

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如何捕获错误的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: golang
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:golang编译为什么快

相关资讯