gpt4 book ai didi

go - 如何温和地推迟可能返回错误的函数的执行?

转载 作者:IT王子 更新时间:2023-10-29 00:50:43 27 4
gpt4 key购买 nike

大多数清理函数,尤其是那些与 IO 操作相关的函数,都会返回一个错误,通常我们更愿意延迟它们的执行,以防万一当我们完成获得的资源时忘记调用他们。例如,在代码中的某个位置,我们可能会这样写:

var r *SomeResource
var err error
if r, err = Open(/* parameters */); err != nil {
return nil, err
}
defer r.Close() // This might return an error

似乎如果 Close 函数返回错误,它将被忽略。我们如何温和地处理从这样的函数返回的 error

最佳答案

像这样将 deferfunc() {}() 一起使用。

var r *SomeResource
var err error
if r, err = Open(/* parameters */); err != nil {
return nil, err
}
defer func() {
if err = r.Close(); err != nil {
fmt.Printf("ERROR: %v", err)
}
}()

关于go - 如何温和地推迟可能返回错误的函数的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53487163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com