15-错误

错误处理

在 Go 中,错误一直是很常见的。错误用内建的 error 类型来表示。

示例

该程序试图打开一个并不存在的文件

package main
import (  
    "fmt"
    "os"
)

func main() {  
    f, err := os.Open("/test.txt")
    if err != nil {        #判断是否是nil,不是nil就是错误
        fmt.Println(err)   #打印错误信息
        return
    }
    fmt.Println(f.Name(), "opened successfully")
}

如果成功打开文件,Open 函数会返回一个文件句柄(File Handler)和一个值为 nil 的错误。而如果打开文件时发生了错误,会返回一个不等于 nil 的错误。

按照 Go 的惯例,在处理错误时,通常都是将返回的错误与 nil 比较。nil 值表示了没有错误发生,而非 nil 值表示出现了错误

错误类型的表示

让我们进一步深入,理解 error 类型是如何定义的error 是一个[接口]类型,定义如下:

type error interface {  
    Error() string
}

error 有了一个签名为 Error() string 的方法。所有实现该接口的类型都可以当作一个错误类型。Error() 方法给出了错误的描述。

fmt.Println 在打印错误时,会在内部调用 Error() string 方法来得到该错误的描述

原文地址:https://www.cnblogs.com/wangcuican/p/12035875.html