​ 严格来说,panic()是一个内置的Go函数,它终止Go程序的当前流程并开始panicking! 另一方面,recover()函数也是一个内置的Go函数,允许你收回那些使用了panic()函数的的控制权。

    第一部分的程序如下:

    第二部分的代码:

    最后一部分代码解释了panic()recover()函数:

    这里发生的事真的令人印象深刻! 但是,正如您从输出中看到的那样,a函数没有正常结束,因为它的最后两个语句没有执行:

    然而,好消息是根据我们的意愿结束而没有panicking,因为defer中使用的匿名函数控制了局面! 另请注意,函数b对函数a一无所知。 但是,函数a包含处理b函数的panic情况的Go代码!