【发布时间】:2017-03-01 17:21:54
【问题描述】:
go 中的许多函数返回错误以适应接口,但这些错误始终为零。是否仍应检查这些错误?
这方面的一个例子是crypto/sha1 Write() function,它不设置错误值。所以代码不需要是:
_, err = sha1Hasher.Write(buffer)
if err != nil {
log.Printf("sha1 could not be calculated (%s)", err)
}
但只有:
sha1Hasher.Write(buffer)
第二个选项更短更简洁,go 中的代码很简单,但建议处理所有错误:
但请记住:无论您做什么,都要检查您的错误!
https://blog.golang.org/errors-are-values
显然,我们必须处理任何错误;我们不能忽视它们。
https://stackoverflow.com/a/16126516/4944254
最好的方法是什么?
【问题讨论】:
-
您不需要处理不可能发生或无法处理的错误。
digest.Write方法只返回一个错误以符合io.Writer接口。您通常也不会看到任何人检查来自fmt.Println的错误。 -
这对你来说是一本好书dave.cheney.net/2016/04/27/…
标签: go error-handling