func panic(interface{})和func recover() interface{}是Golang中用于错误处理的两个函数。

panic的作用就是抛出一条错误信息,从它的参数类型可以看到它可以抛出任意类型的错误信息。 (推荐学习:go)

在函数执行过程中的某处调用了panic,则立即抛出一个错误信息,同时函数的正常执行流程终止,但是该函数中panic之前定义的defer语句将被依次执行。之后该goroutine立即停止执行。

recover()用于将panic的信息捕捉。

recover必须定义在panic之前的defer语句中。在这种情况下,当panic被触发时,该goroutine不会简单的终止,而是会执行在它之前定义的defer语句。

捕捉自己设置的panic错误:

package mainimport "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.1622776601683795foo退出来了b=-10捕获到的错误:必须输入大于0的数foo退出来了该goroutine还可以执行Process finished with exit code 0

更多相关文章

  1. golang不可重入函数实现
  2. golang的函数怎么写
  3. 从go语言闭包谈函数式编程
  4. go语言中函数与方法介绍
  5. go语言结构体组合函数介绍
  6. golang如何调用函数?
  7. 详解Golang中函数作为值与类型
  8. go语言中普通函数与方法的区别是什么?
  9. 详解Go 中方法与函数的区别

随机推荐

  1. android ctl属性的实现过程
  2. Android 应用程序构成
  3. android在处理一写图片资源的时候,会进行
  4. android sim卡 TelephonyManager类:Androi
  5. 【自学Android】使用ModelView,DataBindi
  6. Android动画学习笔记-Android Animation
  7. android 开启Https单向认证
  8. textview设置文本每行的行间距
  9. Android如何设置TextView的行间距、行高
  10. Eclipse安装Android教程