用一些错误代码退出程序的惯用方式是什么?
的文档Exit说:“程序立即终止;延迟的函数不运行。”,log.Fatal仅调用Exit。对于不是严重错误的事情,终止程序而不运行延迟函数似乎是极端的。
Exit
log.Fatal
我是否应该绕过一些表明存在错误的状态,然后Exit(1)在某个我知道可以安全退出并已运行所有延迟函数的位置进行调用?
Exit(1)
我在大多数实际main软件包中都遵循了这些原则,以便return err尽快采用该约定并适当终止该约定:
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 }