为什么`defer recovery()`不会引起恐慌?

为什么`defer recovery()`不会引起恐慌?,第1张

为什么`defer recovery()`不会引起恐慌?

该处理恐慌部分提到,

两个内置函数

panic
recover
,可帮助报告和处理运行时紧急情况

recover
功能允许程序管理恐慌性goroutine的行为。

假设一个函数

G
推迟了
D
调用 的函数
recover
并且
panic
在执行该函数的同一个goroutine上的函数中出现了a
G

当延迟函数的运行达到时

D
D
调用的返回值
recover
将是传递给紧急调用的值。
如果D正常返回而没有开始新的恐慌,则恐慌序列将停止。

这说明

recover
应该在延迟函数中调用,而不是直接调用。
出现紧急情况时,“递延函数”不能是内置函数
recover()
,而是在
defer语句中 指定的函数。

DeferStmt = "defer" expression .

表达式必须是函数或方法调用;不能用括号括起来。
内置函数的调用与 表达式语句
一样受到限制

除特定的内置函数外 ,函数和方法调用以及接收 *** 作可以出现在语句上下文中。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5476425.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存