go (或Golang )是 Google 在2007 年开发的一种开源 编程语言 ,出自Robert Griesemer 、Rob Pike 和Ken Thompson 之手。2009 年11 月10 日, Google Open Source Blog 向全球发布了这款语言:公告指出Go 的主要目标是“兼具Python 等动态语句的开发速度和C 或C ++等编译型语言的性能与安全性”。
软件通常无法避免因各种原因引发的错误,这就需要考虑怎么处理错误。在go的错误处理中,错误也作为一种类型,也就是说可以将错误传递给方法或者函数,由方法或者函数来处理。
(1)下面举个读取文件的错误处理
9行:通过ioutil.ReadFile读取文件,返回值为2个,第一个是[] byte 字节切片,第二个就是error错误值。
10行:判断error是不是空,如果是空,代表9行执行没有问题,如果不是空,那就意味着存在错误。这也是一种约定,发生错误,返回错误值,没有发生错误,返回 nil 。
11行:将错误进行输出,这也是最简单的错误输出方法。
12行:退出程序
14行:如果没有错误,打印文件内容。
由于没有demo1.txt这个文件,所以,错误提示:系统未找到该文件。
(2)错误的类型
在标准库中,声明了error接口,error接口也只有一个方法,就是Error,返回 字符串 。
(3)创建错误
创建并返回错误使用标准库中的errors包,errors包支持创建并操作错误。
9行:使用errors包的New方法创建错误。
10行:检查错误值是不是nil。
11行:如果错误值不是nil,就打印输出。
(4)怎么修改错误的格式
在fmt包中有个方法Errorf,是用于设置返回的错误字符串的格式,通过设置错误的格式。可以动态创建错误字符串,让错误更有意义。
(5)函数返回错误
函数返回错误有一个优点,错误的处理可以不在函数中,可以通过调用函数的地方进行,让处理错误更加灵活。
(6)panic
内置函数panic可以终止正常的控制流程,导致程序终止。