教程 > Go 教程 > Go 基础 阅读:143

Go 语言错误处理详解

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 值则表示存在错误。

查看笔记

扫码一下
查看教程更方便