19、Go语言中的Defer、Panic、Recover与自定义函数

Go语言中的Defer、Panic、Recover与自定义函数

1. Defer的使用

在Go语言里,有一个常见的模式,即创建一个值,然后在该值被垃圾回收之前,延迟调用一个清理函数来释放该值所占用的资源。例如:

defer file.Close()

这是一个典型的打开文件并在打开成功后延迟关闭文件的示例。我们也可以为自己定义的类型提供 Close() Cleanup() 函数,从而应用这种模式,不过在实际中这种情况并不常见。

2. Panic和Recover

Go语言通过内置的 panic() recover() 函数提供了异常处理机制。不过,使用这两个函数来实现通用的异常处理机制,在Go语言里被认为是不良的编程风格。

Go语言将错误(errors)和异常(exceptions)进行了区分:
- 错误 :是那些可能会出现问题,程序应当优雅处理的情况,比如文件无法打开。
- 异常 :是那些“不可能”发生的情况,比如某个前提条件本应始终为真,结果却为假。

在Go语言中,处理错误的惯用方式是将错误作为函数或方法的最后一个(或唯一)返回值,并始终检查返回的错误。不过,在向控制台打印信息时,通常会忽略返回的错误值。

对于“不可能发生”的情况,我们可以调用内置的 panic()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值