golang内建函数defer、panic、recover的运营关系

前言:
	GO语言追求简洁优雅,GO语言不类似try catch操作
    GO语言中引入的处理方式为:defer、panic、recover
    GO可以抛出一个panic异常。然后在defer中通过recover捕获异常再处理

GO没有提供“try-catch-finally”这样的异常处理机制,然而是提供出panic和recover,当然panic写recover还要结合defer使用。

虽然对于其他语言转型的大家一开始会有点不适用,甚至会有征讨之声。但个人感觉,这才是go,这很go。

我们先简单介绍一下panic,defer,recover他们三个各自的功能和实现。

Panic

Panic是内建的停止控制流的函数。相当于抛异常操作。当函数F调用了panic,F的执行会被停止,在F中panic前面定义的defer操作都会被执行,然后F函数返回。对于调用者来说,调用F的行为就像调用panic(如果F函数内部没有把panic recover掉)。如果都没有捕获该panic,相当于一层层panic,程序将会crash。

Defer

Defer语句将一个函数放入一个列表(用栈表示其实更准确)中,该列表的函数在环绕defer的函数返回时会被执行。

Recover

Recover是一个从panic恢复的内建函数。Recover只有在defer的函数里面才能发挥真正的作用。如果是正常的情况(没有发生panic),调用recover将会返回n

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值