> 下面介紹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 快捷鍵