【发布时间】:2015-08-19 08:37:19
【问题描述】:
我在 Google 上搜索了“Golang 错误”、“Go 错误处理”、“Go 错误”和“Go 错误详细”,以查看其他人对此主题的看法,并阅读了一些在线教程。
我也看过类似的 YouTube 视频:https://www.youtube.com/watch?v=Ph4eYD7Bgek
但我仍然不明白为什么我必须在我所做的一切之后添加这些行:
if err != nil {
fmt.Println(err)
}
为什么这不会自动发生?而且我仍然无法理解为什么这种方式比 try, catch 更好。我来自 PHP 背景,在 PHP 中,我几乎从不进行错误检查,每次出现问题时它都会自动记录内容,那么为什么我必须在 Go 上手动进行呢?有什么好处?我真的很想 100% 地“开始”学习这门语言,但是一遍又一遍地编写相同的代码感觉太不对劲了。这与我所学到的编程知识背道而驰,不要重复自己。
我怎样才能更了解这一点?这样做的原因和好处是什么?如果有人举了一些情况的例子,也许我会理解为什么这种处理错误的方式是最好的方式,而不是尝试捕获,这种方式总比不检查要好,就像我在 PHP 中所做的那样。
而且我已经在 Go 的官方网站上阅读过。以及其他各种在线教程,例如:
Oreilly 的视频教程。
来自 Pluralsight 的视频教程。
【问题讨论】:
-
“go 编程语言错误”提出了这个博客:blog.golang.org/errors-are-values
-
这里不是一个很好的话题。这纯粹是一个设计决定。这是一些开发人员持有的主观价值。它体现在语言设计上。 Joel Spolsky 有一篇关于该主题的不错的博客,如果您观看 Robert Pike 所做的有关围棋的早期演示,他也会谈到它。
-
我理解您的担忧,但无法回答您的“问题”并符合 stackoverflow 指南。这太主观了。相反,我建议您从您阅读和观看的教程中总结 5-7 个要点“为什么它好”,并写下您不同意的原因。
-
基本上起点不对。 “为什么我必须在我所做的一切之后添加这些行” - 不,你没有。如果您对结果不感兴趣,没有人会强制您编写它们。如果你这样做,把它们写下来。但是你有兴趣,对吧?
-
"[...] 添加这些行[...] 为什么这不会自动发生?"因为它既不够(您只需在打印后继续),也不是唯一想要的(
main之外我很少想打印错误)。
标签: go