问题
I have a function which open db connection and return it. Or error, if something happened:
OpenDbConnection(connectionString string, logSql bool) (*gorm.DB, error)
In this function I am using logger:
logger := zap.NewExample().Sugar()
defer logger.Sync()
Method Sync()
returns error
and I am ignoring this error.
What is the best strategy in this case ?
I can rewrite my code to avoid linter error, but I am still ignore error:
logger := zap.NewExample().Sugar()
defer func() {
_ = logger.Sync()
}()
I can return error, but I am have correct db connection and I need to analyze this error in the calling function to understand what to do.
回答1:
You can name your returning error variable and initialize anywhere inside the function.
check this test code 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
}
来源:https://stackoverflow.com/questions/57740428/handling-errors-in-defer