登录
首页 >  Golang >  Go问答

哪种方法是恰当的错误处理方式

来源:stackoverflow

时间:2024-03-07 08:45:25 259浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《哪种方法是恰当的错误处理方式》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我的情况是,我有一个函数可以返回最多 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

今天关于《哪种方法是恰当的错误处理方式》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>