在调用可能出现问题的方法或者函数时,返回一个类型为错误的值。这意味着如果出现问题,函数通常不会引发异常,而让调用者决定如何处理错误。

import (
"fmt"
"io/ioutil"
)

func main(){
file,err := ioutil.ReadFile("abc.txt")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("%s",file)
}

在没有abc.txt文件的时候,将触发错误。ReadFile接受一个字符串参数,返回一个字节切片和一个错误值,可以对这个错误值进行检查,不为nil时,代表有错误。

1、创建错误


import (
"fmt"
"errors"
)

func main(){
err :=errors.New("error")
if err!=nil {
fmt.Println(err)
}
}

使用errors包中的方法New创建一个错误,使用if检查这个错误的值是否是nil,不是nil就打印。


2、从函数返回错误


import (
"fmt"
)
func ou(abc int) (int,error){
if abc%2 != 0 {
return -1,fmt.Errorf("error %v",abc)
}
return abc/2,nil
}
func main(){
n,err := ou(11)
if err !=nil {
fmt.Println(err)
return
}
fmt.Println(n)
}

检测参数不能被2整除时,返回-1和错误内容,能够被2整除,就返回除以2后的值和nil。使用者判断err是否是nil,不是就输出err。