【发布时间】:2017-06-14 05:09:14
【问题描述】:
处理程序层深处发生的错误的惯用方法是什么?如果我在包裹深处的某处有这样的 sn-p:
file, err := os.Open(path)
if err != nil {
os.Exit(1) // or return errors.New("The path is invalid.")
}
我是否应该立即返回一个错误并可能将其拖过多个层,其中if {} else {} 块最多达到main 和Exit 中的main 或Exit?
立即使用Exit 代码看起来更干净、更易读。但有时很难测试。使用返回和检查代码看起来更糟(在我看来),但更容易测试并达到 100% 的覆盖率。
还有一个问题...如果我正在编写一个包并且它没有main 函数,我应该将Exits 留给“用户”程序并返回错误吗?
【问题讨论】:
标签: go error-handling idioms