为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
隔江千里 2021-06-15 22:23:05
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()还在被调用?
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

不,延迟的函数没有运行。

这是log.Fatal的描述:

Fatal 等价于 Print() 然后调用 os.Exit(1)。

log.Fatal调用os.Exit,其描述在这里

Exit 导致当前程序以给定的状态代码退出。通常,代码零表示成功,非零表示错误。程序立即终止;延迟函数不会运行。

示范

如果您确实需要在程序完成之前正确关闭资源或执行某些任务,则不要使用log.Fatal.


查看完整回答
反对 回复 2021-06-21
  • 1 回答
  • 0 关注
  • 281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信