gpt4 book ai didi

go - 以下哪项是进行错误处理的正确方法

转载 作者:IT王子 更新时间:2023-10-29 01:43:36 25 4
gpt4 key购买 nike

我的情况是我有一个函数最多可以返回 5 个不同的错误,但我不确定 Go 中的惯例认为哪个是正确的。我在下面做了一个小的 MSVC 示例来说明我的问题。

使用 if 语法来阻止范围我的错误。

if err := validatePassword(password); err != nil {
return err
}

if passwordHash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost); err != nil {
return err
}

或者给每个错误起个不同的名字(看起来很麻烦...)

errValidatePassword := validatePassword(password)
if errValidatePassword != nil {
return errValidatePassword
}

passwordHash, errPasswordHash := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if errPasswordHash != nil {
return errPasswordHash
}

或者使用命名返回。

func registerAccount(email string, password string) (err error) {

err = validatePassword(password)
if err != nil {
return err
}

// POSSIBLE ISSUE HERE as err already been inistalised????
passwordHash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
return err
}
}

最佳答案

在编码时问这个问题是个好问题,但没有一个完美的答案。一般来说,像方法 1 或方法 3 这样的地方处理错误是 Go 中的常见做法。

您可以引用https://blog.golang.org/error-handling-and-go如果需要的话。

关于go - 以下哪项是进行错误处理的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57620512/

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