当前位置:网站首页>Go语学习笔记 - gorm使用 - gorm处理错误 Web框架Gin(十)
Go语学习笔记 - gorm使用 - gorm处理错误 Web框架Gin(十)
2022-08-02 00:19:00 【m0_67401499】
学习笔记,写到哪是哪。
接着上一篇文章:Go语学习笔记 - gorm使用 - 原生sql、命名参数、Rows、ToSQL | Web框架Gin(九)_的博客-CSDN博客
目前gorm对数据库的一些操作基本了解。
本篇主要测试一下gorm的异常处理方式。
项目地址:github地址
可以先看看gorm定义的异常,代码如下:
var (
// ErrRecordNotFound record not found error
ErrRecordNotFound = logger.ErrRecordNotFound
// ErrInvalidTransaction invalid transaction when you are trying to `Commit` or `Rollback`
ErrInvalidTransaction = errors.New("invalid transaction")
// ErrNotImplemented not implemented
ErrNotImplemented = errors.New("not implemented")
// ErrMissingWhereClause missing where clause
ErrMissingWhereClause = errors.New("WHERE conditions required")
// ErrUnsupportedRelation unsupported relations
ErrUnsupportedRelation = errors.New("unsupported relations")
// ErrPrimaryKeyRequired primary keys required
ErrPrimaryKeyRequired = errors.New("primary key required")
// ErrModelValueRequired model value required
ErrModelValueRequired = errors.New("model value required")
// ErrInvalidData unsupported data
ErrInvalidData = errors.New("unsupported data")
// ErrUnsupportedDriver unsupported driver
ErrUnsupportedDriver = errors.New("unsupported driver")
// ErrRegistered registered
ErrRegistered = errors.New("registered")
// ErrInvalidField invalid field
ErrInvalidField = errors.New("invalid field")
// ErrEmptySlice empty slice found
ErrEmptySlice = errors.New("empty slice found")
// ErrDryRunModeUnsupported dry run mode unsupported
ErrDryRunModeUnsupported = errors.New("dry run mode unsupported")
// ErrInvalidDB invalid db
ErrInvalidDB = errors.New("invalid db")
// ErrInvalidValue invalid value
ErrInvalidValue = errors.New("invalid value, should be pointer to struct or slice")
// ErrInvalidValueOfLength invalid values do not match length
ErrInvalidValueOfLength = errors.New("invalid association values, length doesn't match")
// ErrPreloadNotAllowed preload is not allowed when count is used
ErrPreloadNotAllowed = errors.New("preload is not allowed when count is used")
)
编写一个接口来测试一下异常。
在student_service下新增TestError方法。
方法代码如下:
//测试gorm异常
func (t StudentImpl) TestError() rsp.ResponseMsg {
log.Logger.Info("测试gorm异常")
_db := mysql.GetDB()
var _student db_entity.Student
if _err := _db.Where("del_flag = 1").First(&_student).Error; _err != nil {
if errors.Is(_err, gorm.ErrRecordNotFound) {
fmt.Println("error is ErrRecordNotFound")
}
log.Logger.Panic("error -> ", log.Any("error", _err))
}
log.Logger.Debug("student -> ", log.Any("student", _student))
return *rsp.SuccessMsg("测试成功")
}
如果sql无法获取到record,会报出ErrRecordNotFound异常。
controller层增加接口代码,如下:
//测试gorm异常
func (s StudentController) TestError(context *gin.Context) {
log.Logger.Info("测试gorm异常接口")
_rsp := services.StudentServ.TestError()
context.JSON(http.StatusOK, _rsp)
}
验证一下接口执行后的打印输出。

可以看到是全局捕获的异常响应报文。

小结
在项目开发中,异常处理是比较必要的。
最近有点忙,也有所体悟,有时候需要把压力释放一下,但是需要合理有效的方式。有时候需要把压力往身边分担下,并不是什么时候都需要扛下所有。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- Redis 相关问题
- 管理基础知识20
- 思维导图,UML在线画图工具
- 什么是低代码(Low-Code)?低代码适用于哪些场景?
- 冒泡排序函数封装
- 22.卷积神经网络实战-Lenet5
- 管理基础知识11
- Realize deletion - a specified letter in a string, such as: the string "abcd", delete the "a" letter in it, the remaining "bcd", you can also pass multiple characters to be deleted, and pass "ab" can
- datax与datax-web安装部署
- Redis的集群模式
猜你喜欢

Redis - message publish and subscribe

23.卷积神经网络实战-ResNet

第 45 届ICPC亚洲区域赛(上海)G-Fibonacci

ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)

Pytorch seq2seq 模型架构实现英译法任务

渗透测试与攻防对抗——渗透测试基础

Don't concatenate strings with jOOQ

理解分布式系统中的缓存架构(下)

Stapler:1 靶机渗透测试-Vulnhub(STAPLER: 1)

Go 1.18 的那些事——工作区、模糊测试、泛型
随机推荐
Angr(十二)——官方文档(Part3)
What is the function of the JSP out.println() method?
ICML 2022 | GraphFM:通过特征Momentum提升大规模GNN的训练
Test Cases: Four-Step Test Design Approach
Multidimensional Correlation Time Series Modeling Method Based on Screening Partial Least Squares Regression of Correlation Variables
抖音数据接口API-获取用户主页信息-监控直播开启
思维导图,UML在线画图工具
渗透测试与攻防对抗——渗透测试基础
Mean Consistency Tracking of Time-Varying Reference Inputs for Multi-Agent Systems with Communication Delays
nodeJs--mime module
Knowing the inorder traversal of the array and the preorder traversal of the array, return the postorder history array
swing的Jlist列表滚动条以及增加元素的问题
管理基础知识9
IDEA版Postman插件Restful Fast Request,细节到位,功能好用
ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘解决方法
flowable工作流所有业务概念
DOA从一维阵列传感说起
Don't concatenate strings with jOOQ
管理基础知识12
ECMAScript 2022 正式发布,有你了解过的吗?