猿问

调用 log.Fatalln 时是否调用了延迟函数?

db, err := sql.Open("postgres", "…")

if err != nil {

    log.Fatalln(err)

}

defer db.Close()


tpl, err := template.ParseGlob("")

if err != nil {

    log.Fatalln(err)

}

如果template.ParseGlob("")返回错误,是否db.Close()还在被调用?


隔江千里
浏览 282回答 1
1回答

炎炎设计

不,延迟的函数没有运行。这是log.Fatal的描述:Fatal 等价于 Print() 然后调用 os.Exit(1)。log.Fatal调用os.Exit,其描述在这里:Exit 导致当前程序以给定的状态代码退出。通常,代码零表示成功,非零表示错误。程序立即终止;延迟函数不会运行。示范如果您确实需要在程序完成之前正确关闭资源或执行某些任务,则不要使用log.Fatal.
随时随地看视频慕课网APP

相关分类

Go
我要回答