From 1133905bb235cb2e5d71cc02642f27a4982d5dc2 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Tue, 3 Jan 2023 14:14:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0db=E5=B1=82=20=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=8D=95=E6=8D=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sys/db/dbmodel.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/sys/db/dbmodel.go b/sys/db/dbmodel.go index cc71dcbc2..d741b29df 100644 --- a/sys/db/dbmodel.go +++ b/sys/db/dbmodel.go @@ -13,6 +13,7 @@ import ( "go_dreamfactory/lego/utils/codec/codecore" "go_dreamfactory/lego/utils/codec/json" "reflect" + "runtime" "time" "unsafe" @@ -313,6 +314,14 @@ func (this *DBModel) Get(uid string, data interface{}, opt ...DBOption) (err err //读取多个数据对象 func (this *DBModel) Gets(ids []string, data interface{}, opt ...DBOption) (err error) { //defer log.Debug("DBModel GetListObjs", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "ids", Value: ids}, log.Field{Key: "data", Value: data}) + defer func() { //程序异常 收集异常信息传递给前端显示 + if r := recover(); r != nil { + buf := make([]byte, 4096) + l := runtime.Stack(buf, false) + err = fmt.Errorf("%v: %s", r, buf[:l]) + log.Errorf("[DB Gets] TableName:%s ids:%v", this.TableName, ids) + } + }() var ( dtype reflect2.Type dkind reflect.Kind @@ -427,6 +436,14 @@ func (this *DBModel) Gets(ids []string, data interface{}, opt ...DBOption) (err //获取列表数据 注意 data 必须是 切片的指针 *[]type func (this *DBModel) GetList(uid string, data interface{}) (err error) { //defer log.Debug("DBModel GetList", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "data", Value: data}) + defer func() { //程序异常 收集异常信息传递给前端显示 + if r := recover(); r != nil { + buf := make([]byte, 4096) + l := runtime.Stack(buf, false) + err = fmt.Errorf("%v: %s", r, buf[:l]) + log.Errorf("[DB GetList] TableName:%s uid:%s", this.TableName, uid) + } + }() var ( dtype reflect2.Type dkind reflect.Kind @@ -706,6 +723,14 @@ func (this *DBModel) GetListObj(uid string, id string, data interface{}) (err er //读取列表数据中单个数据 func (this *DBModel) GetListObjs(uid string, ids []string, data interface{}) (err error) { //defer log.Debug("DBModel GetListObjs", log.Field{Key: "TableName", Value: this.TableName}, log.Field{Key: "uid", Value: uid}, log.Field{Key: "ids", Value: ids}, log.Field{Key: "data", Value: data}) + defer func() { //程序异常 收集异常信息传递给前端显示 + if r := recover(); r != nil { + buf := make([]byte, 4096) + l := runtime.Stack(buf, false) + err = fmt.Errorf("%v: %s", r, buf[:l]) + log.Errorf("[DB GetListObjs] TableName:%s uid:%s", this.TableName, uid) + } + }() var ( dtype reflect2.Type dkind reflect.Kind