为了账号安全,请及时绑定邮箱和手机立即绑定

恐慌和断言有什么区别?

恐慌和断言有什么区别?

Go
DIEA 2021-04-02 10:11:59
Go不提供断言。它们无疑是很方便的,但是我们的经验是程序员将它们用作拐杖,以避免考虑适当的错误处理和报告。然而,它具有打印和println哪些呢紧急打印,在打印后中止执行紧急打印,在打印后中止执行那和断言不是一回事吗?他们为什么会声称以上内容却感到恐慌?我可以看到它导致了同样的问题,但是在它的末尾添加了一个错误消息,很容易被滥用。我想念什么吗?
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

不,这不对。恐慌就像“先写然后中止”,而断言就像“测试,如果它为假,则先写然后中止”。无论如何,他们无法阻止您做出类似断言的声明。


查看完整回答
反对 回复 2021-04-26
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

除了显而易见的是,它panic并不会检查任何东西assert,在Go中,即使发生恐慌,您也可以使用机制进行错误处理。

如果程序包认为发生了某些事情,则无法从它中惊慌失措。

但是,包用户,调用方(父级)可能要检查或记录紧急情况,然后继续进行紧急情况,或者捕获它以正确处理案件(例如,重试或使用其他程序包/功能)。

同样,断言中止不会调用析构函数或任何东西。尽管Go中的恐慌仍然会调用您defer将要执行的函数,所以一切都已清理干净。

因此,正如您所看到的,与断言相反,紧急情况将允许执行各种清理任务。那就是你给的报价所指向的。


查看完整回答
反对 回复 2021-04-26
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

例如,在C语言中,assert()只有在调试模式下才会中止执行。


查看完整回答
反对 回复 2021-04-26
  • 3 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信