Go语言中的Defer、Panic、Recover与自定义函数
1. Defer的使用
在Go语言里,有一个常见的模式,即创建一个值,然后在该值被垃圾回收之前,延迟调用一个清理函数来释放该值所占用的资源。例如:
defer file.Close()
这是一个典型的打开文件并在打开成功后延迟关闭文件的示例。我们也可以为自己定义的类型提供 Close() 或 Cleanup() 函数,从而应用这种模式,不过在实际中这种情况并不常见。
2. Panic和Recover
Go语言通过内置的 panic() 和 recover() 函数提供了异常处理机制。不过,使用这两个函数来实现通用的异常处理机制,在Go语言里被认为是不良的编程风格。
Go语言将错误(errors)和异常(exceptions)进行了区分:
- 错误 :是那些可能会出现问题,程序应当优雅处理的情况,比如文件无法打开。
- 异常 :是那些“不可能”发生的情况,比如某个前提条件本应始终为真,结果却为假。
在Go语言中,处理错误的惯用方式是将错误作为函数或方法的最后一个(或唯一)返回值,并始终检查返回的错误。不过,在向控制台打印信息时,通常会忽略返回的错误值。
对于“不可能发生”的情况,我们可以调用内置的 panic() 函
超级会员免费看
订阅专栏 解锁全文
962

被折叠的 条评论
为什么被折叠?



