Go 错误处理

捕获错误的代码

//Go 语言中没有try catch这样麻烦的异常捕获方法
//如果需要捕获异常的话需要使用 defer panic recover() 来实现
func main() {
      fmt.Println("c")
   defer func() { // 必须要先声明defer,否则不能捕获到panic异常
      fmt.Println("d")
      if err := recover(); err != nil {
         fmt.Println(err) // 这里的err其实就是panic传入的内容
      }
      fmt.Println("e")
   }()
   f() //开始调用f
   fmt.Println("f") //这里开始下面代码不会再执行
}

func f() {
   fmt.Println("a")
   panic("异常信息")
   fmt.Println("b") //这里开始下面代码不会再执行
}
-------output-------
c
a
d
异常信息
e

自定义错误

总结

一旦出现了错误,将会调用panic系列函数 -> 退出当前gorouting -> defer 调用出栈