首页 > 试题广场 >

函数执行时,如果由于panic导致了异常,则延迟函数不会执行

[单选题]
函数执行时,如果由于panic导致了异常,则延迟函数不会执行。这一说法是否正确。
  • true
  • false
可以用recover来捕获defer panic
发表于 2018-01-28 20:13:09 回复(0)
更多回答
recover也是写在defer中的,如果程序panic了,难道recover就不执行了吗
发表于 2018-08-11 09:14:11 回复(0)
defer可以用来recover
发表于 2018-01-16 20:39:31 回复(0)
由panic引发异常以后,程序停止执行,然后调用延迟函数(defer),就像程序正常退出一样。另外recover也是要写在延迟函数中的,如果发生异常延迟函数就不执行了,那就永远无法recover了。
发表于 2018-04-30 12:15:44 回复(0)
异常发生后,panic之前的defer函数会被执行,但是panic之后的defer函数并不会被执行
发表于 2020-09-08 22:26:28 回复(0)
由panic引发异常以后,程序停止执行,然后调用延迟函数(defer),就像程序正常退出一样。另外recover也是要写在延迟函数中的,如果发生异常延迟函数就不执行了,那就永远无法recover了。
发表于 2018-04-13 11:02:11 回复(0)
panic了之后延迟函数会执行。
发表于 2019-05-27 21:05:04 回复(0)

defer 会在函数返回之前执行传入的函数,经常被用来关闭文件描述符,关闭数据库连接,以及解锁

栈的顺序进行执行

panic

当 panic 异常发生的时候,程序会中断执行,并立即执行在该 go routine 中被延迟的 函数 defer 机制

随后,程序 奔溃并输出日志信息

利用 panic 之后要先执行 defer 的机制就可以实现在 panic 的时候也能进行资源释放

panic 指挥触发当前 go routine 的 defer 语句

recover

recover 可以中止 panic 造成的程序奔溃

只能在 defer 中发挥作用

recover 必须在 defer 中调用

recover 只能恢复同一个协程中 的 panic

并不是所有的 panic 都可以被 recover 掉

发表于 2022-07-06 17:05:30 回复(0)
recover 在延迟函数中
发表于 2022-04-25 14:51:43 回复(0)
k/头像 k/
延迟函数是defer
发表于 2019-08-05 12:03:34 回复(0)