go - 重置 golang 中的错误是不好的做法吗?

标签 go error-handling

当将字符串解析为文本时,我希望任何不可解析的字符串产生零时间然后继续。

passwordLastUsed, err = time.Parse(time.RFC3339, record[lastUsed])
if err != nil {
    err = nil
    passwordLastUsed = time.Time{}
}

这段代码看起来有点乱,'ineffassign' linter 为 'err = nil' 语句返回这个:

warning: ineffectual assignment to err (ineffassign)

有没有更好的方法来处理这个问题,还是我应该忽略 linter?

最佳答案

如果您想这样做的话,重置错误变量并不是坏习惯。

设置以后不使用的变量是不好的做法——这就是警告的内容。

你正在做的可能从来没有理由重置错误,因为在 if block err 之后 总是nil

如果您只是在某些情况下重置,这确实有意义。一个常见的例子:

result, err := db.Query(...)
if err == sql.ErrNoRows {
    err = nil // Ignore not-found rows
}
if err != nil {
    return err // But return all other errors
}

关于go - 重置 golang 中的错误是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940805/

相关文章:

go - 无法正确解析时间

php - 将数据从PHP发送到jQuery

c# - 如何摆脱try catch?

json - 为每个 GET 请求创建一个新的 JSON 文件

go - 模型.go : res declared and not used

c - 如何将Golang的cgo与链接到math.h的C库一起使用?

ruby-on-rails - Rails在类方法上返回错误

javascript - 如何在IE8中包装attachEvent

vbscript - 经典ASP错误处理: Calling a function after an error?

go - 读取 http 响应时内存使用量增加