当前位置:网站首页>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 .
边栏推荐
- Différenciation et introduction des services groupés, distribués et microservices
- SQLSTATE[HY000][1130] Host ‘host. docker. internal‘ is not allowed to connect to this MySQL server
- nVisual网络可视化
- What is message queuing?
- 高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏
- PowerPivot - DAX (function)
- win配置pm2开机自启node项目
- 《HarmonyOS实战—入门到开发,浅析原子化服务》
- zabbix_get测试数据库失败
- Determine whether the file is a DICOM file
猜你喜欢
WEB架构设计过程
Loss function and positive and negative sample allocation in target detection: retinanet and focal loss
I didn't know it until I graduated -- the principle of HowNet duplication check and examples of weight reduction
Interview questions and salary and welfare of Shanghai byte
Web authentication API compatible version information
bat 批示处理详解
常用消息队列有哪些?
Simple case of SSM framework
集群、分布式、微服务的区别和介绍
PTA ladder game exercise set l2-004 search tree judgment
随机推荐
Go 语言的 Context 详解
每秒10W次分词搜索,产品经理又提了一个需求!!!(收藏)
《2022中国低/无代码市场研究及选型评估报告》发布
成为资深IC设计工程师的十个阶段,现在的你在哪个阶段 ?
cf:C. Column Swapping【排序 + 模拟】
404 not found service cannot be reached in SAP WebService test
Explication contextuelle du langage Go
AI face editor makes Lena smile
判断文件是否为DICOM文件
PowerPivot - DAX (function)
WEB架构设计过程
目标检测中的损失函数与正负样本分配:RetinaNet与Focal loss
Message queue: how to handle repeated messages?
【日常训练--腾讯精选50】292. Nim 游戏
Three level menu data implementation, nested three-level menu data
Flask1.1.4 Werkzeug1.0.1 源码分析:启动流程
老板总问我进展,是不信任我吗?(你觉得呢)
C#可空类型
zabbix_ Get test database failed
集群、分布式、微服務的區別和介紹