Go不提供断言。它们无疑是很方便的,但是我们的经验是程序员将它们用作拐杖,以避免考虑适当的错误处理和报告。然而,它具有打印和println哪些呢紧急打印,在打印后中止执行紧急打印,在打印后中止执行那和断言不是一回事吗?他们为什么会声称以上内容却感到恐慌?我可以看到它导致了同样的问题,但是在它的末尾添加了一个错误消息,很容易被滥用。我想念什么吗?
3 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
除了显而易见的是,它panic
并不会检查任何东西assert
,在Go中,即使发生恐慌,您也可以使用机制进行错误处理。
如果程序包认为发生了某些事情,则无法从它中惊慌失措。
但是,包用户,调用方(父级)可能要检查或记录紧急情况,然后继续进行紧急情况,或者捕获它以正确处理案件(例如,重试或使用其他程序包/功能)。
同样,断言中止不会调用析构函数或任何东西。尽管Go中的恐慌仍然会调用您defer
将要执行的函数,所以一切都已清理干净。
因此,正如您所看到的,与断言相反,紧急情况将允许执行各种清理任务。那就是你给的报价所指向的。
- 3 回答
- 0 关注
- 238 浏览
添加回答
举报
0/150
提交
取消