登录
首页 >  Golang >  Go问答

尝试使用Go来处理我的错误

来源:stackoverflow

时间:2024-02-14 13:24:22 137浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《尝试使用Go来处理我的错误》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我使用 gorm 运行以下代码:

result := db.where("account_name = ?", config.accountname).first(&accountrecord) // line 299

    // if there is some error when working with db
    if result.error != nil && !errors.is(result.error, gorm.errrecordnotfound) {
        fmt.println("error when processing accountresponse")
        return 0, false, result.error
    }

// in case that record exists
    if result.error != nil {
        accountrecord = newacountdata

        result = db.create(&accountrecord)
    } else {
        result = db.model(&accountrecord).updates(newacountdata)
    }

我确实想在找不到记录的情况下运行一些逻辑。但是 - 我的控制台中仍然显示错误,提示 the record was not found:

2021/08/30 18:30:16 /Users/kana/projects/server/data-processor/commands.go:289 record not found
[4.966ms] [rows:0] SELECT * FROM "accounts" WHERE account_name = 'kana' AND "accounts"."deleted_at" IS NULL ORDER BY "accounts"."id" LIMIT 1

为什么会发生这种情况?之后整个程序运行良好 - 没有崩溃,整体行为是它的设计方式。只是这个错误消息让我很恼火。


正确答案


这是因为 gorm 正在处理一些日志输出,而未找到 记录 就是其中之一。如果您需要禁用此类日志活动,您可以执行以下操作:

如果您使用的是 gorm v1

https://pkg.go.dev/github.com/jinzhu/gorm#DB.LogMode

db.logmode(false)

如果您使用 gorm v2,您可以将记录器传递给 gorm 配置并控制输出。

https://gorm.io/docs/logger.html#Log-Levels

db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
  Logger: logger.Default.LogMode(logger.Silent),
})

好了,本文到此结束,带大家了解了《尝试使用Go来处理我的错误》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>