扫码一下
查看教程更方便
Go 编程语言提供了一个非常简单的错误处理框架。错误表示程序中发生了异常情况。假设我们正在尝试打开一个文件,但该文件在文件系统中不存在。这是一种异常情况,表示为Error。
Go 中的错误使用内置error 类型表示。就像任何其他内置类型(例如 int、float64、...)一样,错误值可以存储在变量中、作为参数传递给函数、从函数返回等等。
以下是声明的内置错误接口类型
type error interface {
Error() string
}
它是一个包含方法Error() string的接口。任何实现此接口的类型都可以用作错误。此方法提供错误的描述。
函数通常将错误作为最后一个返回值返回。使用errors.New构建基本错误消息,代码如下
func Sqrt(value float64)(float64, error) {
if(value < 0){
return 0, errors.New("Math: negative number passed to Sqrt")
}
return math.Sqrt(value), nil
}
使用返回值和错误消息。
result, err:= Sqrt(-1)
if err != nil {
fmt.Println(err)
}
让我们立即开始尝试打开一个不存在的文件的示例程序。
package main
import (
"fmt"
"os"
)
func main() {
f, err := os.Open("/test.txt")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(f.Name(), "opened successfully")
}
如果文件已成功打开,则 Open 函数将返回文件处理句柄,err将为 nil。如果打开文件时出现错误,将返回一个非零错误。
上面程序会打印出
open /test.txt: No such file or directory
完美 :)。我们收到一条错误消息,指出该文件不存在。
在 Go 中处理错误的惯用方法是将返回的 error 与 nil 进行比较。如果相等表示没有发生错误,如果是非 nil 值则表示存在错误。