7.3. 第2节:panic函数

未匹配的标注
本文档最新版为 2023,旧版本可能放弃维护,推荐阅读最新版!

panic函数

error返回的是一般性的错误,但是panic函数返回的是让程序崩溃的错误

也就是当遇到不可恢复的错误状态的时候,如数组访问越界、空指针引用等,这些运行时错误会引起painc异常,在一般情况下,我们不应通过调用panic函数来报告普通的错误,而应该只把它作为报告致命错误的一种方式。当某些不应该发生的场景发生时,我们就应该调用panic。

一般而言,当panic异常发生时,程序会中断运行。随后,程序崩溃并输出日志信息。日志信息包括panic value和函数调用的堆栈跟踪信息。

当然,如果直接调用内置的panic函数也会引发panic异常;panic函数接受任何值作为参数。

直接调用panic函数

下面给大家演示一下,直接调用panic函数,是否会导致程序的崩溃。

func TestA() {
    fmt.Println("func TestA()")
}
func TestB() {
    panic("throw error")
}
func TestC() {
    fmt.Println("func TestC()")
}

func main() {
    TestA()
    TestB()
    TestC()
}

错误信息如下:

第2节:panic函数

所以,我们在实际的开发过程中并不会直接调用panic( )函数,但是当我们编程的程序遇到致命错误时,系统会自动调用该函数来终止整个程序的运行,也就是系统内置了panic函数。

数组下标越界的问题

下面给大家演示一个数组下标越界的问题:

func TestA() {
    fmt.Println("func TestA()")
}
func TestB(x int) {
    var a [10] int
    a[x] = 222 // x 值为11时候,数组越界
}
func TestC() {
    fmt.Println("func TestC()")
}

func main() {
    TestA()
    TestB(11)  // TestB() 发生异常 中断程序
    TestC()
}

错误信息如下:

第2节:panic函数
通过观察错误信息,发现确实是panic异常,导致了整个程序崩溃。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~