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

问题描述 投票:5回答:1

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

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

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

警告:对err的无效分配(ineffassign)

有没有更好的方法来处理这个或我应该忽略linter?

go error-handling
1个回答
6
投票

重置错误变量是不错的做法,如果这是你想要做的。

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

可能从来没有理由像你一样重置错误,因为在if块之后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
}
© www.soinside.com 2019 - 2024. All rights reserved.