我正在编写一个包含数据库包的 Go 应用程序。现在在数据库包中有几个方法,您可以调用它们来获取基于某些字段的实体。
我想知道当没有找到实体时,Go 中错误处理的最佳实践是什么。我应该在自己的数据库包中返回错误还是返回 nil 作为值?
我知道当没有找到实体时,谷歌的数据存储会返回错误。
现在我正在使用 gorm
,当没有找到实体时它也会返回错误。
我想知道您是否可以简单地返回 nil
作为值而不是返回错误。我漏掉了一点吗?
最佳答案
如果您使用的是 gorm
,则有一个专门用于该功能的函数;即,
// IsRecordNotFoundError returns true if error contains a RecordNotFound error
func IsRecordNotFoundError(err error) bool {}
您可以按如下方式使用它:
err = db.Find(object).Error
if err != nil {
if gorm.IsRecordNotFoundError(err) {
// handle object not found
} else {
return err
}
}
对于您的问题:
I'm wondering you can simply return nil as the value instead of returning an error
这真的取决于你的设计;所以如果你想分离你的数据库层,那么你仍然应该使用你自己导出的错误类型通知用户这个错误,让他们按照他们的意愿处理。
关于database - 未找到实体时的正确错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55372748/