引入
我相信在你编写 Go 代码的时候,你肯定遇到过内置
error
类型。Go 代码使用error
来指示异常状态。例如,当你使用os.Open
函数但 Go 无法打开文件时,err
就会为非nil
值。func Open(name string) (file *File, err error) 复制代码
以下代码用于在
os.Open
打开文件的错误捕捉。如果发生错误,它将调用log.Fatal
以打印错误消息并停止程序的运行。f, err := os.Open("filename.ext") if err != nil { log.Fatal(err) } 复制代码
在编程语言领域,通常 异常(Exception) 这一术语所描述的是一种数据结构,该数据结构可以存储异常的相关信息。异常处理的常见的一种机制是移交控制权。引发 raise exception
(某些语言中也称之为 throw exception
)。异常抛出后,控制权会被移交至某处的接 catch
,并执行处理。
如果我们不处理异常,则有可能会影响用户体验(比如说会让用户访问到本该不可访问到的信息,或让应用程序崩溃)。捕捉异常并处理异常是程序员们的家常便饭,当然,在此之后,我们大多会将异常信息上传至服务器以供后续分析。
Go 错误捕捉
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。
error
类型是一个接口类型,这是它的定义:
type error interface {
Error() string
}
复制代码
我们可以在编码中通过实现 error
接口类型来生成错误信息。
函数通常在最后的返回值中返回错误信息。使用 errors.New
可返回一个错误信息:
func Sqrt(f float64) (float64, error) {
if f < 0 {
return 0, errors.New("math: square root of negative number")
}
}
作者:Hoarfroster
链接:https://juejin.cn/post/6953225665495695374
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。