延迟处理错误

时间:2019-08-31 17:56:36

标签: go

我有一个打开数据库连接并返回它的函数。还是发生错误,如果发生了什么:

OpenDbConnection(connectionString string, logSql bool) (*gorm.DB, error) 

在此功能中,我正在使用记录器:

logger := zap.NewExample().Sugar()
defer logger.Sync()

方法Sync()返回error,而我忽略了此错误。

在这种情况下最好的策略是什么?

我可以重写代码以避免linter错误,但是我仍然忽略错误:

logger := zap.NewExample().Sugar()
defer func() {
    _ = logger.Sync()
}()

我可以返回错误,但是我有正确的数据库连接,我需要在调用函数中分析此错误以了解该怎么做。

1 个答案:

答案 0 :(得分:3)

您可以命名返回的错误变量,并在函数内的任何位置进行初始化。

检查此测试代码here

OpenDbConnection(connectionString string, logSql bool) (db *gorm.DB, err error) {

    logger := zap.NewExample().Sugar()
    defer func() {
        err = logger.Sync()
    }()

    // some logic here

    return db, err

}