本文解释了为何在 go 语言中 `if err == nil { return err }` 会导致后续代码不执行,并阐明错误检查的正确写法与常见误区。
在 Go 语言中,错误处理是核心编程实践之一,而一个常见却隐蔽的逻辑错误是在 err == nil 时提前返回 nil,从而意外终止函数执行流。正如示例代码所示:
fmt.Println("Error:", err)
if err == nil {
return err // ← 此处返回后,下方代码永不再执行
}
fmt.Println("Done category")当 err 为 nil(即无错误)时,fmt.Println("Error:", err) 输出 Error:
✅ 正确做法是:仅在发生错误时中断流程,成功路径应继续执行。标准 Go 错误处理模式为“早返回错误(fail fast),让正常逻辑自然延续”:
fmt.Println("Error:", err) if err != nil { // 注意:使用 != nil 判断错误发生 return err // 或做错误日志、转换、包装等处理 } // ✅ 此处为无错误时的正常业务逻辑 fmt.Println("Done category")
⚠️ 注意事项:
总结:Go 的错误处理哲学是 “显式检查错误,隐式信任成功”。牢记 if err != nil 是守门员,而非 if err == nil 是启动器——后者不仅冗余,更易引发难以调试的流程跳过问题。