跳转到主要内容

【Go语言开发】在 Go 中处理恐慌(Panics )

介绍


程序遇到的错误分为两大类:程序员已经预料到的错误和程序员没有预料到的错误。我们在前两篇关于错误处理的文章中介绍的错误接口主要处理我们在编写 Go 程序时所期望的错误。错误接口甚至允许我们确认函数调用发生错误的罕见可能性,因此我们可以在这些情况下做出适当的响应。

恐慌属于第二类错误,这是程序员没有预料到的。这些不可预见的错误导致程序自发终止并退出正在运行的 Go 程序。常见的错误通常是造成恐慌的原因。在本教程中,我们将研究常见操作在 Go 中产生恐慌的几种方式,我们还将看到避免这些恐慌的方法。我们还将使用 defer 语句和恢复函数来捕获恐慌,以免它们有机会意外终止我们正在运行的 Go 程序。

了解恐慌(Panics )


Go 中有某些操作会自动返回恐慌并停止程序。常见操作包括索引超出其容量的数组、执行类型断言、在 nil 指针上调用方法、错误地使用互斥锁以及尝试使用封闭通道。大多数这些情况是由于在编译程序时编译器无法检测到的编程错误造成的。

由于恐慌包含有助于解决问题的细节,因此开发人员通常使用恐慌来表示他们在程序开发过程中犯了错误。