延迟处理错误 [英] Handling errors in defer

查看:44
本文介绍了延迟处理错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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()

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

Method Sync() returns error and I am ignoring this error.

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

What is the best strategy in this case ?

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

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.

推荐答案

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

You can name your returning error variable and initialize anywhere inside the function.

此处

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

}

这篇关于延迟处理错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆