go中的許多函數都會返回錯誤以適合界面,但這些錯誤始終爲零。是否應該檢查這些錯誤?在處理所有返回的錯誤時,它是否是慣用的?
一個例子是crypto/sha1 Write() function,它沒有設置err值。因此,代碼並不需要是:
_, err = sha1Hasher.Write(buffer)
if err != nil {
log.Printf("sha1 could not be calculated (%s)", err)
}
但僅限於:
sha1Hasher.Write(buffer)
第二個選項是更短,更清潔,去了很多關於簡單的代碼,但建議來處理所有的錯誤:
但請記住:不管你做什麼,總是檢查你的錯誤!
https://blog.golang.org/errors-are-values
顯然,我們必須處理的任何錯誤;我們不能忽視它們。
https://stackoverflow.com/a/16126516/4944254
這是最好的方式去?
您不需要處理不能發生或無法處理的錯誤。 'digest.Write'方法只返回一個符合'io.Writer'接口的錯誤。您通常不會看到任何人檢查'fmt.Println'中的錯誤。 – JimB
這是一本很好的讀物http://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully –