区块链技术语言(二十六):Go语言字典

栏目: Go · 发布时间: 5年前

内容简介:任何编程语言的学习都要考虑错误处理。早期的语言,比如C语言中的errno,不是语言规范的一部分,通常只作为一种编程范式存在。但C++语言从语言层面上增加错误处理的支持,比如异常的概念和try-catch关键字的引入。而Go语言最大的亮点之一就是拥有漂亮的错误处理规范。error是Go语言内建的接口类型,它是错误处理的标准模式,定义如下:

任何编程语言的学习都要考虑错误处理。早期的语言,比如 C语言 中的errno,不是语言规范的一部分,通常只作为一种编程范式存在。但C++语言从语言层面上增加错误处理的支持,比如异常的概念和try-catch关键字的引入。而 Go 语言最大的亮点之一就是拥有漂亮的错误处理规范。

1

error

error是Go语言内建的接口类型,它是错误处理的标准模式,定义如下:

区块链技术语言(二十六):Go语言字典

在Go语言中,生成err值的方法有三种方式:通过errors包的New函数获得error类型的值,采用fmt.Errof 将string信息转化为error类型的信息,通过自定义实现一个error类型的值。

  1.1 通过errors包的New函数获得error 类型的值

创建自定义错误最简单的方法是使用errors包中的New函数。标准库中的errors包的信息如下:

区块链技术语言(二十六):Go语言字典

示例代码:

区块链技术语言(二十六):Go语言字典

区块链技术语言(二十六):Go语言字典

1.2 调用fmt包中的Errorf函数

另一个可以生成error类型值的方法是调用fmt包中的Errorf函数:

区块链技术语言(二十六):Go语言字典

示例代码:

区块链技术语言(二十六):Go语言字典

2

panic

如果程序出现普通错误,程序会返回一个error类型的值。但是当出现运算时把零作为除数、数组访问越界、引用空指针等操作都会引发程序出现崩溃性错误,必须调用panic,此时程序会中断运行,并输出日志信息。日志信息包括panic value和函数调用的堆栈跟踪信息。

引发panic异常的不仅包括上面所说的引发程序出现崩溃性错误的操作,也包括直接调用内置函数——panic函数。

2.1 由引发程序致命性操作导致程序出现 panic异常

运算时把零作为除数、数组访问越界、引用空指针等操作都会引发程序出现崩溃性错误,引发panic异常。

区块链技术语言(二十六):Go语言字典

区块链技术语言(二十六):Go语言字典

区块链技术语言(二十六):Go语言字典

2.2 调用panic函数引发panic异常

Go语言提供了内置函数——panic函数,直接调用该内置函数也会引发panic异常,panic函数格式如下:

区块链技术语言(二十六):Go语言字典

注:panic函数形参是空接口,能接受任何值作为参数。

区块链技术语言(二十六):Go语言字典

3

recover

3.1 recover函数在程序出现panic错误 时的应用

如果程序出现的panic异常一旦被引发就会导致程序崩溃,为了让程序从运行时的panic状态中恢复,Go语言提供了内置的recover函数——“拦截”运行时的panic。它使当前的程序从运行时的panic状态中恢复并重新获得流程控制权。panic函数格式如下:

区块链技术语言(二十六):Go语言字典

注:recover只有在defer调用的匿名函数中才有效。

区块链技术语言(二十六):Go语言字典

3.2 recover函数在程序出现多个panic

错误时的应用

a. 当主程序有多个panic,第一个panic发生时,recover函数让程序从运行时的panic状态中恢复,获得流程控制权,之后main程序结束。

区块链技术语言(二十六):Go语言字典

b. 当延迟调用语句中有panic,捕获程序最后一个错误,也就是defer语句最先出现panic的语句。当程序遇到第一个panic,程序会调用defer语句,直到defer语句最先出现panic的语句,此时recover函数让程序从运行时的panic状态中恢复,获得流程控制权,之后main程序结束。

区块链技术语言(二十六):Go语言字典

原文链接:区块链技术语言(二十六):Go语言字典

参考资料

[1] https://studygolang.com/articles/12784

[2] https://studygolang.com/articles/12785

本文完,获取更多资讯,敬请关注区块链工程师。

区块链技术语言(二十六):Go语言字典

来源:链块学院

本文由布洛克专栏作者发布,代表作者观点,版权归作者所有,不代表布洛克科技观点

——TheEnd——

关注“布洛克科技”

区块链技术语言(二十六):Go语言字典


以上所述就是小编给大家介绍的《区块链技术语言(二十六):Go语言字典》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web标准和SEO应用实践

Web标准和SEO应用实践

Aarron Walter / 李清 / 机械工业出版社 / 2008 / 36.00元

本书是关于搜索引擎优化和易发现性的技术指南。. 本书介绍Web标准、可访问性以及Ajax、API、Flash和微格式等内容,包括标记策略、服务器端策略、内容策略、建构易发现的博客、在网站内添加搜索、防止易发现性障碍、用邮件列表挽回流量、将易发现性付诸实践。 本书适合网站开发者与SEO技术业余爱好者等参考。 这不是为营销专家写的一本SEO的书。 针对那些想要找到网站的目标用户......一起来看看 《Web标准和SEO应用实践》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具