跳转至

17.错误处理

Go语言中,错误处理是按照惯例,将一个可能出错的函数的最后一个返回值来表示是否出错,如果不为nil,即表示出错。

Go语言创始人这样描述错误:error is a value

按照惯例,对于可能出错的函数,我们一般这样调用:

result, err := f()
if err != nil {
    exit(1)
}

error类型

go语言对于错误有特定类型,名为error。实际上error是一个接口,只要实现了这样一个函数:Error(),且返回一个string,就满足该接口。

error包中有一个New()函数,接受一段字符串作为错误信息,返回一个error类型变量指针。

错误类型可以使用Print()函数打印。

panic与recover

go语言有一个类似raise Error的机制,就是panicpanic的使用很简单,直接调用下列函数即可

panic(<arguent>)

其中的参数可以是任意类型,具体细节参考其他资料。

go语言不推荐使用panic,应当优先使用err错误值。

如果想使用类似except的处理机制,需要defer recover(),或者defer的函数中包含recover调用。程序将在抛出panic、执行defer recover()后继续运行。