登录
首页 >  Golang >  Go问答

如何优雅地处理错误

来源:stackoverflow

时间:2024-03-20 18:00:32 210浏览 收藏

优雅地处理错误是编写健壮且可靠 Go 程序的关键。当在 goroutine 中出现错误时,惯用的做法是立即处理错误,而不是继续执行或惊慌。可以通过将错误返回给调用者或使用 `recover()` 函数来恢复恐慌,从而使调用者能够根据错误做出适当的决定。这种方法可以防止错误传播并破坏整个程序,确保应用程序即使在遇到错误时也能优雅地运行。

问题内容

我有一个带有逻辑的 goroutine:

result1, err := getResult1()
result2, err := getResult2(result)
result3, err := getResult3(result2)

如果我在 getresult1() 中出现错误,我根本不想继续这个 goroutine,但不要惊慌,因为它也会破坏 main。我以一种糟糕的方式实现了它,但是惯用的解决方案是什么?


正确答案


惯用的方式是做某事

r, err := get()
if err != nil {
    // do something with err
    // do not continue
}
…

您可以将错误返回给调用者,然后由调用者决定要做什么。

您无需惊慌。您只需登录即可。

或者使用某个循环中的错误来重试

在golang中,最好在错误发生时立即处理

result1, err := getresult1()
if err != nil {
    // log your error and return
    return err
}
result2, err := getresult2(result)
result3, err := getresult3(result2)

如果您需要处理恐慌并重新获得对恐慌 goroutine 的控制,那么recover() 就是您的最佳选择:

defer func() {
    if r := recover(); r != nil {
        fmt.Println("Recovering my panicing goroutine", r)
    }
}()

终于介绍完啦!小伙伴们,这篇关于《如何优雅地处理错误》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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