Go错误

Go语言没有像Java中的try/catch一样的异常机制,我们无法在Go中抛出异常。

Go使用一种不同的机制,称为延迟-恐慌-恢复机制(defer-panic-and-recover mechanism)。

对于函数和方法,Go通过返回一个错误对象来处理简单错误。错误对象可能是唯一的返回值或最后一个返回值。如果函数没有错误,则错误对象为nil。

我们应该在调用语句中始终检查错误,以确定是否收到错误。

我们永远不应忽略错误,否则可能导致程序崩溃。 Go检测和报告错误的方式是

  • 可能导致错误的函数返回两个变量:一个值和一个错误代码,如果成功则为nil,如果出现错误则为非nil。
  • 在函数调用之后检查错误。如果发生错误(如果error != nil),则停止执行实际的函数(或必要时停止整个程序)。

Go有预定义的错误接口类型。

type error interface {  
        Error() string  
}     

我们可以使用error包中的error.New定义错误类型,并提供适当的错误消息,例如:

err := errors.New("math - square root of negative number")  

Go错误示例

package main  
import "errors"  
import "fmt"  
import "math"  
func Sqrt(value float64) (float64, error) {  
   if (value < 0) {  
      return 0, errors.New("Math: negative number passed to Sqrt")  
   }  
   return math.Sqrt(value), nil  
}  
func main() {  
   result, err := Sqrt(-64)  
   if err != nil {  
      fmt.Println(err)  
   } else {  
      fmt.Println(result)  
   }  
   result, err = Sqrt(64)  
   if err != nil {  
      fmt.Println(err)  
   } else {  
      fmt.Println(result)  
   }  
}  

输出:

Math: negative number passed to Sqrt
8

标签: Golang, Golang下载, Golang教程, Golang技术, Golang学习, Golang学习教程, Golang语言, Golang开发, Golang入门教程, Golang进阶教程, Golang高级教程, Golang面试题, Golang笔试题, Golang编程思想