一架梯子,一头程序猿,仰望星空!

GORM 错误处理


下面介绍GORM关于错误的处理方式

错误处理

如果在执行SQL查询的时候,出现错误,GORM 会将错误信息保存到 *gorm.DB 的Error字段,我们只要检测Error字段就可以知道是否存在错误。

if err := db.Where("name = ?", "tizi365").First(&user).Error; err != nil {
  // 错误处理
}

或者

if result := db.Where("name = ?", "jinzhu").First(&user); result.Error != nil {
  // 错误处理
}

处理多个错误

有时候在执行查询的时候会返回多个错误,下面是处理多个错误的方式

// 通过GetErrors获取错误列表
errors := db.First(&user).Limit(10).Find(&users).GetErrors()

fmt.Println(len(errors)) // 打印错误数量

// 遍历错误内容
for _, err := range errors {
  fmt.Println(err)
}

RecordNotFound error

如果查询不到数据,GORM会产生一个RecordNotFound错误,我们可以通过检测这个错误识别是否找到数据

// 方式1
// 检测是否找到数据
db.Where("name = ?", "hello world").First(&user).RecordNotFound()

// 方式2
if db.Model(&user).Related(&credit_card).RecordNotFound() {
  // 数据不存在
}

if err := db.Where("name = ?", "tizi365").First(&user).Error; 

gorm.IsRecordNotFoundError(err) {
  // 数据不存在
}