什么是error类型
在Go语言中,除基本数据类型(int,float,boolean,string)、复合型(struct,array)和引用类型(slice,map,指针,channel,function)外,还有一种内置的数据类型:error。
error是Go语言的内置类型,因此就像int等类型一样,不需要引用任何包,就可以定义error类型的变量。
var err error //定义一个error类型的变量err
复制代码
实际上,error类型是一个接口类型,在Go语言中的定义如下,
type error interface {
Error() string
}
复制代码
error的定义在builtin包,注意,这个包不需要使用import语句引入。
如果你学过Go语言有关接口的知识便知道,任意的类型,只要在这种类型中有定义与接口相同的方法,便是实现了这个接口,因此Go语言error类型的定义,为Go编程提供了一套有关错误处理的机制。
错误处理机制
有别于其他编程语言,在Go语言中,并没有try...catch这种异常处理机制,虽然panic()和recover()这两个函数配合使用可以达到类似try...catch的异常捕捉效果,但还是有不同之处。
在Go语言的标准库,常常可见到函数中有返回error的函数定义,这便是Go语言的错误处理机制,由开发人员显性返回错误,再由上层调用者决定如何处理。
package os
func Create(name string) (*File, error)
func Open(name string) (*File, error)
复制代码