小编典典

用错误代码退出吗?

go

用一些错误代码退出程序的惯用方式是什么?

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

我是否应该绕过一些表明存在错误的状态,然后Exit(1)在某个我知道可以安全退出并已运行所有延迟函数的位置进行调用?


阅读 228

收藏
2020-07-02

共1个答案

小编典典

我在大多数实际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
}
2020-07-02