Java转Go语言 -12

The way go to go 的十三章总结

错误处理与测试
相对于Java的try/catch
Go自己有一套 defer-panic-and-recover机制
相对于java,Go对于错误的处理:
1) 不会从底层抛异常到更高层(太耗费资源)
2)通过在函数和方法中返回错误对象作为它们的唯一或最后一个返回值——如果返回 nil

错误处理
错误值是用来表示异常状态
也可以自定义错误状态,fmt.Printf会自动调用String()方法所以可以打印出来。
注意 你自己的错误信息不要大写字母开头
如果想返回包含错误参数的信息,可以使用fmt.Errorf()来实现–>可以实现从命令行读取输入,然后利用这些输入做出一个错误反应。

运行时异常和panic
1)Go运行时会触发运行时panic
2)panic也可以直接从代码初始化(意味着这里的错误十分严重)
3)多层嵌套的话,会交还控制权,注意每层的defer(panicking)
4)不能随意使用panic中止程序

从panic中恢复
内建函数:recover用于恢复
但是recover只能在defer修饰的函数中使用(想一想也是正常的 发生了错误 defer函数才是唯一确定一定会执行的,所以恢复函数要放在这里面)
确实,defer-panic-recover在某种意义上就是像 if for这样的流程机制。注意顺序。

自定义包中的错误处理和panicking
准守2个原则:
1)在包内部,总是应该从panic中recover,不允许显性地超出包范围的panic
2) 向包的调用者传递错误值
*注意:*在深层次的嵌套调用时,将panic转成error来告诉调用方为何出错,提高了代码的可读性。

一种用闭包处理错误的模式
注意: 这种模式只有所有的函数都是一种签名的时候可以用(例如 web应用)
Go语言下,多态和错误检查及恢复的结合。

启动外部命令和程序
os包中的startProcess和exec.Command都可以用作启动或调用外部系统命令和二进制可执行文件。

Go中的单元测试和基准测试
注意: 测试数据需要包括:正常的用例,反面用例和便捷检查用例。

性能调试:分析并优化Go程序
这一节主要讲述了分析代码性能的小工具
蛮有意思的。
第三项(pprof调试):
调用最频繁的函数;
函数调用链
很有意思并且也是提高的一个方向。
在引用15中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值