什么时候使用 os.Exit() 和 panic()?
技术问答
207 人阅读
|
0 人回复
|
2023-09-12
|
有些人可以解释它们之间的主要区别os.Exit()以及panic()它们在 Go 中的实际使用方法吗?; b% U, V- R: R
& J- C+ g7 c6 \* D* ~5 p$ ~ 解决方案:
, Z! y0 k5 \$ ]/ K& U7 C 首先,每当你有如何在实践中使用的问题时,一个好的开始就是搜索Go 源代码(或任何足够大的 Go 代码库,真的)和包文档以获得答案。
4 v5 L% K& J2 g' M& d" w. _现在,os.Exit和panic现在大不相同了。panic当程序或其部分达到不可恢复状态时使用。
0 x) V( L2 \; O! F. `) q8 w' r当panic调用时,包括索引切片越界或类型断言失败等隐式操作错误,会立即停止当前函数的执行并开始 goroutine 堆栈,在此过程中运行任何延迟函数。如果扩展到 goroutine 在堆栈的顶部,程序将终止。+ B" J/ X! L3 P
os.Exit当您需要立即中止程序时使用时,不可能恢复或延迟操作以清理句子,并返回错误代码(其他程序可用于报告发生的情况)。这在测试中非常有用。当你已经知道测试失败后,另一个也会失败,所以你现在不妨退出。当你的程序完成了它需要做的一切时,你也可以在打印帮助信息后使用它。
# l) q6 r: ~) _. K; N. D大多数时候,你不会使用它panic(你应该回一个error),而且你几乎不需要os.Exit除了测试中的某些情况和快速终止程序。 |
|
|
|
|
|