> 下面介绍GORM关于错误的处理方式
[TOC]
## 错误处理
> 如果在执行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
if gorm.IsRecordNotFoundError(err) {
// 数据不存在
}
~~~
- 基础知识
- 开发环境
- 包名规则
- 包初始化 (init)
- 基础数据类型
- 基础类型转换
- 格式化输出
- go指针
- 流程控制语句
- 函数定义
- 匿名函数
- 数组和切片
- map集合
- 结构体
- Interface接口
- 日期处理
- 数学计算
- 正则表达式
- 协程 (并发处理)
- channel
- waitgroup
- mutex (锁机制)
- websocket
- protobuf
- Redis
- 错误处理
- 打包程序
- NSQ消息队列
- 单元测试
- beego
- 安装入门
- Gin
- 快速入门
- 路由与控制器
- 处理请求参数
- 表单验证
- 处理响应结果
- 渲染HTML模版
- 访问静态文件
- Gin中间件
- Cookie处理
- Session处理
- Gin上传文件
- swagger
- pprof性能测试
- GORM
- 入门教程
- 模型定义
- 数据库连接
- 插入数据
- 查询数据
- 更新数据
- 删除数据
- 事务处理
- 关联查询
- 属于 (BELONG TO)
- 一对一 (Has One)
- 一对多 (Has Many)
- 多对多 (Many to Many)
- 预加载 (Preloading)
- 错误处理
- 第三方常用插件
- viper 读取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷键