我是靠谱客的博主 曾经紫菜,最近开发中收集的这篇文章主要介绍错误处理 &事务事务,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

 

一、处理单个错误

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

// 或者

result := db.Where("name = ?", "jinzhu").First(&user)

if result.Error != nil {
  // 错误处理
}

二、处理多个错误

通过GetErrors获取错误列表

errors := db.First(&user).Limit(10).Find(&users).GetErrors()
fmt.Println(len(errors)) // 打印错误数量

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

三、错误种类

gorm.错误类型进行判断,如gorm.ErrRecordNotFound

1.RecordNotFound:查询不到数据,不适用于切片

gorm.IsRecordNotFoundError(err) {
    // 没有查询到数据
}

2.ErrInvalidSQL:无效sql

3.ErrInvalidTransaction:事务有错

4.ErrCantStartTransaction:无法开启事务,出现在使用Begin的情况下

5.ErrUnaddressable:使用不可寻址的值,传递的指针值不对

事务

用 db.Begin() 声明开启事务,结束的时候调用 tx.Commit(),异常的时候调用 tx.Rollback()

ct := db.Begin() // 开启事务
ret3 := ct.Commit()

if ret3.Error != nil {
    ct.Rollback()   // 回滚
}

最后

以上就是曾经紫菜为你收集整理的错误处理 &事务事务的全部内容,希望文章能够帮你解决错误处理 &事务事务所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部