panic都会被捕获吗?哪些panic不会捕获

提问者:帅平 问题分类:面试刷题
panic都会被捕获吗?哪些panic不会捕获
1 个回答
Missyoulonely
Missyoulonely
1、不是所有的panic都会被捕获。如果没有在合适的位置使用defer和recover来处理panic,那么当panic发生时,程序会沿着函数调用栈向上回溯,直到找到可以处理它的recover调用或者程序直接崩溃。例如,在一个没有任何defer - recover机制的简单函数中发生了panic,并且这个函数没有被其他可以捕获panic的函数调用,那么这个panic就不会被捕获,程序会直接退出。
2、而在有defer和recover的函数或者协程中,当发生panic时,recover可以捕获到panic的值,并且可以在这个函数内部进行处理,阻止panic继续向上传播导致程序崩溃。
发布于:4个月前 (01-02) IP属地:
我来回答