退出时出现错误代码?

新手上路,请多包涵

退出带有错误代码的程序的惯用方法是什么?

Exit 的文档说“程序立即终止;延迟函数不运行。”,和 log.Fatal 只是调用 Exit 对于不是令人发指的错误的事情,终止程序而不运行延迟函数似乎是极端的。

我是否应该传递一些指示出现错误的状态,然后调用 Exit(1) 在某个时候我知道我可以安全退出,所有延迟函数都已运行?

原文由 dan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 473
2 个回答

我在我的大部分真实 main 包中做了一些事情,以便尽快采用 return err 约定,并有一个适当的终止:

 func main() {
    if err := run(); err != nil {
        fmt.Fprintf(os.Stderr, "error: %v\n", err)
        os.Exit(1)
    }
}

func run() error {
    err := something()
    if err != nil {
        return err
    }
    // etc
}

原文由 Gustavo Niemeyer 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 Python 中,我通常使用一种模式,将其转换为 Go 如下所示:

 func run() int {
    // here goes
    // the code

    return 1
}

func main() {
    os.Exit(run())
}

原文由 user2424794 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题