如何确保golang关闭数据库连接?

时间:2016-06-01 08:36:15

标签: go exception-handling

我的golang main()路由初始化数据库连接,然后将其传递给另一个函数以启动主处理。

func main() {
    dbinfo := fmt.Sprintf("user=%s dbname=%s sslmode=disable", "my_user", "my_db")

    db, err := sql.Connect("postgres", dbinfo)
    if err != nil { log.Fatalln(err) }
    defer db.Close()


    model.Run(db)
}

model.Run()方法用于调用其他几个包和函数,只是在它们之间传递db对象。

如果其中一个下游函数遇到错误怎么办?程序是否会在不关闭上面定义的连接的情况下关闭?或者它会冒出异常并在defer中执行我的main()语句?

为了它的价值,我按照以下方式处理所有错误 -

_, err := someFunction()
if err != nil { log.Fatalln(err) }

注意:Fatalln相当于调用Println然后调用os.Exit(1)See here

0 个答案:

没有答案