当前位置:网站首页>Go language learning notes - Gorm use - Gorm processing errors | web framework gin (10)
Go language learning notes - Gorm use - Gorm processing errors | web framework gin (10)
2022-07-07 05:56:00 【Swordsman a Liang_ ALiang】
Learning notes , Where is where .
Next to the previous article :Go English learning notes - gorm Use - Native sql、 Named parameters 、Rows、ToSQL | Web frame Gin( Nine )_ Swordsman a Liang _ALiang The blog of -CSDN Blog
at present gorm Have a basic understanding of some database operations .
This article mainly tests gorm Exception handling method of .
Project address :github Address
You can have a look first gorm Defined exception , The code is as follows :
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")
)
Write an interface to test the exception .
stay student_service Add below TestError Method .
The method code is as follows :
// test gorm abnormal
func (t StudentImpl) TestError() rsp.ResponseMsg {
log.Logger.Info(" test gorm abnormal ")
_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(" Test success ")
}
If sql Can't get record, It will be reported ErrRecordNotFound abnormal .
controller Add interface code in layer , as follows :
// test gorm abnormal
func (s StudentController) TestError(context *gin.Context) {
log.Logger.Info(" test gorm Exception interface ")
_rsp := services.StudentServ.TestError()
context.JSON(http.StatusOK, _rsp)
}
Verify the printout after the interface is executed .
It can be seen that the exception response message captured globally .
Summary
In project development , Exception handling is quite necessary .
A little busy recently , Also have some understanding , Sometimes you need to release the pressure , But we need a reasonable and effective way . Sometimes you need to share the pressure with others , It's not always necessary to carry all .
边栏推荐
- Go 语言的 Context 详解
- 目标检测中的损失函数与正负样本分配:RetinaNet与Focal loss
- [shell] clean up nohup Out file
- Harmonyos practice - Introduction to development, analysis of atomized services
- Go语学习笔记 - gorm使用 - gorm处理错误 | Web框架Gin(十)
- Simple case of SSM framework
- zabbix_ Get test database failed
- Why does the data center need a set of infrastructure visual management system
- Senior programmers must know and master. This article explains in detail the principle of MySQL master-slave synchronization, and recommends collecting
- R language [logic control] [mathematical operation]
猜你喜欢
集群、分布式、微服务的区别和介绍
Realize GDB remote debugging function between different network segments
What is dependency injection (DI)
mac版php装xdebug环境(m1版)
Question 102: sequence traversal of binary tree
驱动开发中platform设备驱动架构详解
力扣102题:二叉树的层序遍历
《ClickHouse原理解析与应用实践》读书笔记(6)
目标检测中的BBox 回归损失函数-L2,smooth L1,IoU,GIoU,DIoU,CIoU,Focal-EIoU,Alpha-IoU,SIoU
OpenSergo 即将发布 v1alpha1,丰富全链路异构架构的服务治理能力
随机推荐
《2022中国低/无代码市场研究及选型评估报告》发布
Opensergo is about to release v1alpha1, which will enrich the service governance capabilities of the full link heterogeneous architecture
I didn't know it until I graduated -- the principle of HowNet duplication check and examples of weight reduction
JVM the truth you need to know
【已解决】记一次EasyExcel的报错【读取xls文件时全表读不报错,指定sheet名读取报错】
苹果cms V10模板/MXone Pro自适应影视电影网站模板
PTA 天梯赛练习题集 L2-002 链表去重
架构设计的五个核心要素
sql查询:将下一行减去上一行,并做相应的计算
How much do you know about clothing ERP?
《HarmonyOS实战—入门到开发,浅析原子化服务》
[shell] clean up nohup Out file
如果不知道这4种缓存模式,敢说懂缓存吗?
力扣102题:二叉树的层序遍历
线性回归
Reptile exercises (III)
Flask1.1.4 werkzeug1.0.1 source code analysis: start the process
Différenciation et introduction des services groupés, distribués et microservices
Forkjoin is the most comprehensive and detailed explanation (from principle design to use diagram)
话说SQLyog欺骗了我!