我如何进一步理解为什么Go会以这种方式处理错误?

亚历克斯:

我在Google上搜索了“ Golang错误”,“ Go错误处理”,“ Go错误”和“ Go错误冗长”,以了解其他人对该主题的看法,并在线阅读一些教程。

我也看过这样的YouTube视频:https : //www.youtube.com/watch?v=Ph4eYD7Bgek

但是我仍然不明白为什么我必须在所有操作之后添加以下行:

if err != nil {
    fmt.Println(err)
}

为什么这不会自动发生?而且我仍然不明白为什么这种方法比尝试捕获更好。我来自PHP的背景,在PHP中,我几乎从未进行过错误检查,每次出错时,它都会自动记录内容,那么为什么我必须在Go上手动进行此操作?有什么好处?我真的很想100%地学习这种语言,但是一次又一次地编写相同的代码感觉太错误了。不要重复自己的做法,这与我从编程中学到的知识背道而驰。

我如何进一步了解?这是什么原因和好处?也许我会理解是否有人提供了某些情况的示例,为什么这种处理错误的方法是最好的方法,而不是尝试catch,并且这种方法总比不检查像我在PHP中那样好。

而且我已经在Go的官方网站上阅读了。以及其他各种在线教程,例如:

https://gobyexample.com/

Oreilly的视频教程。

来自Pluralsight的视频教程。

icza:

我希望这是一个评论,但链接太多:

博客文章:错误处理和执行

有效执行:错误

所以答案:错误返回

这样的问题:去-优雅地处理多个错误?

这样的问题:Go中更简洁的错误处理

博客文章:错误就是价值

代码审查问题:最低版本控制系统

返回带有上下文的“错误处理程序”函数的函数:

func ger(ctxt string) func(string, error) error {
    return func(msg string, err error) error {
        return fmt.Errorf("%s : %s : %v", ctxt, msg, err)
    }
}

// And using it:
er := ger("Handling cmd")
er("Add", err)

...清单继续,使用Google和SO搜索。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章