何时在Golang中使用os.Exit()和panic()?

前端之家收集整理的这篇文章主要介绍了何时在Golang中使用os.Exit()和panic()?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有人可以解释os.Exit()和panic()之间的关键差异,以及它们在实践中如何在Golang中使用?
首先,每当你有一个“如何在实践中使用”的问题,一个好的方法开始是 search的Go源代码(或任何足够大的Go代码库,真的),和 package docs的答案。

现在,os.Exit和panic是完全不同的。 panic在程序或其部分已达到不可恢复状态时使用。

When panic is called,including implicitly for run-time errors such as indexing a slice out of bounds or failing a type assertion,it immediately stops execution of the current function and begins unwinding the stack of the goroutine,running any deferred functions along the way. If that unwinding reaches the top of the goroutine’s stack,the program dies.

os.Exit用于需要立即中止程序,没有恢复或运行延迟清理语句的可能性,并且还返回错误代码(其他程序可以用来报告发生了什么)。这在测试中很有用,当你已经知道在这一个测试失败后,另一个测试也会失败,所以你可能现在就退出。这也可以在您的程序完成它需要做的一切时使用,现在只需要退出,即打印帮助消息后。

大多数时候你不会使用panic(你应该返回一个错误),你几乎不需要os.Exit在一些情况下的测试和快速程序终止。

猜你在找的Go相关文章