在解答这个问题前,有必要对错误和异常做一个解释
在 Go 没有异常类型,只有错误类型(Error)。
一个函数要是想返回错误,通常会使用返回值来表示异常状态,它很像 C语言中的错误码,可逐层返回,直到被处理。
f, err := os.Open("test.txt")
if err != nil {
log.Fatal(err)
}
Go 语言中虽然没有异常的概念,但是却有更为恐怖的 panic ,由于有了 recover,在一定程度上, panic 可以类比做异常。
Golang错误和异常(panic)是可以互相转换的: