diff --git a/cmd/gf/gfcmd/gfcmd.go b/cmd/gf/gfcmd/gfcmd.go index 6d7126031..6f3ff277e 100644 --- a/cmd/gf/gfcmd/gfcmd.go +++ b/cmd/gf/gfcmd/gfcmd.go @@ -8,6 +8,8 @@ package gfcmd import ( _ "github.com/gogf/gf/cmd/gf/v2/internal/packed" + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" "context" @@ -38,7 +40,7 @@ func (c *Command) Run(ctx context.Context) { if err, ok := exception.(error); ok { mlog.Print(err.Error()) } else { - panic(exception) + panic(gerror.NewCodef(gcode.CodeInternalPanic, "%+v", exception)) } } }() diff --git a/database/gdb/gdb_core_transaction.go b/database/gdb/gdb_core_transaction.go index 1fd52f2a2..33b3aa443 100644 --- a/database/gdb/gdb_core_transaction.go +++ b/database/gdb/gdb_core_transaction.go @@ -91,7 +91,7 @@ func (c *Core) Transaction(ctx context.Context, f func(ctx context.Context, tx T if v, ok := exception.(error); ok && gerror.HasStack(v) { err = v } else { - err = gerror.Newf("%+v", exception) + err = gerror.NewCodef(gcode.CodeInternalPanic, "%+v", exception) } } } @@ -277,7 +277,7 @@ func (tx *TXCore) Transaction(ctx context.Context, f func(ctx context.Context, t if v, ok := exception.(error); ok && gerror.HasStack(v) { err = v } else { - err = gerror.Newf("%+v", exception) + err = gerror.NewCodef(gcode.CodeInternalPanic, "%+v", exception) } } } diff --git a/errors/gcode/gcode.go b/errors/gcode/gcode.go index 7e307af97..b3bb1b379 100644 --- a/errors/gcode/gcode.go +++ b/errors/gcode/gcode.go @@ -46,6 +46,7 @@ var ( CodeNotFound = localCode{65, "Not Found", nil} // Resource does not exist. CodeInvalidRequest = localCode{66, "Invalid Request", nil} // Invalid request. CodeNecessaryPackageNotImport = localCode{67, "Necessary Package Not Import", nil} // It needs necessary package import. + CodeInternalPanic = localCode{68, "Internal Panic", nil} // An panic occurred internally. CodeBusinessValidationFailed = localCode{300, "Business Validation Failed", nil} // Business validation failed. ) diff --git a/net/ghttp/ghttp_func.go b/net/ghttp/ghttp_func.go index cb550ba10..cf045c6b2 100644 --- a/net/ghttp/ghttp_func.go +++ b/net/ghttp/ghttp_func.go @@ -47,12 +47,12 @@ func niceCallFunc(f func()) { panic(v) } else { panic(gerror.WrapCodeSkip( - gcode.CodeInternalError, 1, v, "exception recovered", + gcode.CodeInternalPanic, 1, v, "exception recovered", )) } } else { panic(gerror.NewCodeSkipf( - gcode.CodeInternalError, 1, "exception recovered: %+v", exception, + gcode.CodeInternalPanic, 1, "exception recovered: %+v", exception, )) } } diff --git a/net/ghttp/ghttp_server_handler.go b/net/ghttp/ghttp_server_handler.go index f7f24119b..a4f27dcfb 100644 --- a/net/ghttp/ghttp_server_handler.go +++ b/net/ghttp/ghttp_server_handler.go @@ -67,10 +67,10 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { if code := gerror.Code(v); code != gcode.CodeNil { s.handleErrorLog(v, request) } else { - s.handleErrorLog(gerror.WrapCodeSkip(gcode.CodeInternalError, 1, v, ""), request) + s.handleErrorLog(gerror.WrapCodeSkip(gcode.CodeInternalPanic, 1, v, ""), request) } } else { - s.handleErrorLog(gerror.NewCodeSkipf(gcode.CodeInternalError, 1, "%+v", exception), request) + s.handleErrorLog(gerror.NewCodeSkipf(gcode.CodeInternalPanic, 1, "%+v", exception), request) } } } diff --git a/os/gcmd/gcmd_command_run.go b/os/gcmd/gcmd_command_run.go index 2c0e7f4e7..c3f6fd53c 100644 --- a/os/gcmd/gcmd_command_run.go +++ b/os/gcmd/gcmd_command_run.go @@ -108,7 +108,7 @@ func (c *Command) doRun(ctx context.Context, parser *Parser) (value interface{}, if v, ok := exception.(error); ok && gerror.HasStack(v) { err = v } else { - err = gerror.Newf(`exception recovered: %+v`, exception) + err = gerror.NewCodef(gcode.CodeInternalPanic, "exception recovered: %+v", exception) } } }() diff --git a/os/gfsnotify/gfsnotify_watcher_loop.go b/os/gfsnotify/gfsnotify_watcher_loop.go index 59f558fdb..cfd340c50 100644 --- a/os/gfsnotify/gfsnotify_watcher_loop.go +++ b/os/gfsnotify/gfsnotify_watcher_loop.go @@ -8,6 +8,8 @@ package gfsnotify import ( "context" + "github.com/gogf/gf/v2/errors/gcode" + "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/container/glist" "github.com/gogf/gf/v2/internal/intlog" @@ -127,6 +129,9 @@ func (w *Watcher) eventLoop() { case callbackExitEventPanicStr: w.RemoveCallback(callback.Id) default: + if e, ok := err.(error); ok { + panic(gerror.WrapCode(gcode.CodeInternalPanic, e)) + } panic(err) } } diff --git a/os/grpool/grpool.go b/os/grpool/grpool.go index dd9dcf7e6..aac2f4329 100644 --- a/os/grpool/grpool.go +++ b/os/grpool/grpool.go @@ -155,7 +155,7 @@ func (p *Pool) AddWithRecover(ctx context.Context, userFunc Func, recoverFunc Re if v, ok := exception.(error); ok && gerror.HasStack(v) { recoverFunc(ctx, v) } else { - recoverFunc(ctx, gerror.Newf(`%+v`, exception)) + recoverFunc(ctx, gerror.NewCodef(gcode.CodeInternalPanic, "%+v", exception)) } } } diff --git a/os/gtimer/gtimer_entry.go b/os/gtimer/gtimer_entry.go index dc389d08d..0e3d1ac59 100644 --- a/os/gtimer/gtimer_entry.go +++ b/os/gtimer/gtimer_entry.go @@ -8,6 +8,7 @@ package gtimer import ( "context" + "github.com/gogf/gf/v2/errors/gcode" "github.com/gogf/gf/v2/container/gtype" "github.com/gogf/gf/v2/errors/gerror" @@ -51,7 +52,7 @@ func (entry *Entry) Run() { if v, ok := exception.(error); ok && gerror.HasStack(v) { panic(v) } else { - panic(gerror.Newf(`exception recovered: %+v`, exception)) + panic(gerror.NewCodef(gcode.CodeInternalPanic, "exception recovered: %+v", exception)) } } else { entry.Close() diff --git a/util/gconv/gconv_maptomap.go b/util/gconv/gconv_maptomap.go index 7ff924cca..d9b5322dc 100644 --- a/util/gconv/gconv_maptomap.go +++ b/util/gconv/gconv_maptomap.go @@ -100,7 +100,7 @@ func doMapToMap(params interface{}, pointer interface{}, mapping ...map[string]s if v, ok := exception.(error); ok && gerror.HasStack(v) { err = v } else { - err = gerror.NewCodeSkipf(gcode.CodeInternalError, 1, "%+v", exception) + err = gerror.NewCodeSkipf(gcode.CodeInternalPanic, 1, "%+v", exception) } } }() diff --git a/util/gconv/gconv_maptomaps.go b/util/gconv/gconv_maptomaps.go index 6ab8e2199..4a474ef8c 100644 --- a/util/gconv/gconv_maptomaps.go +++ b/util/gconv/gconv_maptomaps.go @@ -113,7 +113,7 @@ func doMapToMaps(params interface{}, pointer interface{}, mapping ...map[string] if v, ok := exception.(error); ok && gerror.HasStack(v) { err = v } else { - err = gerror.NewCodeSkipf(gcode.CodeInternalError, 1, "%+v", exception) + err = gerror.NewCodeSkipf(gcode.CodeInternalPanic, 1, "%+v", exception) } } }() diff --git a/util/gconv/gconv_struct.go b/util/gconv/gconv_struct.go index 290729916..06fe661c0 100644 --- a/util/gconv/gconv_struct.go +++ b/util/gconv/gconv_struct.go @@ -100,7 +100,7 @@ func doStruct(params interface{}, pointer interface{}, mapping map[string]string if v, ok := exception.(error); ok && gerror.HasStack(v) { err = v } else { - err = gerror.NewCodeSkipf(gcode.CodeInternalError, 1, "%+v", exception) + err = gerror.NewCodeSkipf(gcode.CodeInternalPanic, 1, "%+v", exception) } } }() @@ -633,7 +633,7 @@ func bindVarToReflectValue(structFieldValue reflect.Value, value interface{}, ma defer func() { if exception := recover(); exception != nil { err = gerror.NewCodef( - gcode.CodeInternalError, + gcode.CodeInternalPanic, `cannot convert value "%+v" to type "%s":%+v`, value, structFieldValue.Type().String(), diff --git a/util/gconv/gconv_structs.go b/util/gconv/gconv_structs.go index be1322a72..b8c04ff66 100644 --- a/util/gconv/gconv_structs.go +++ b/util/gconv/gconv_structs.go @@ -53,7 +53,7 @@ func doStructs(params interface{}, pointer interface{}, mapping map[string]strin if v, ok := exception.(error); ok && gerror.HasStack(v) { err = v } else { - err = gerror.NewCodeSkipf(gcode.CodeInternalError, 1, "%+v", exception) + err = gerror.NewCodeSkipf(gcode.CodeInternalPanic, 1, "%+v", exception) } } }() diff --git a/util/gutil/gutil.go b/util/gutil/gutil.go index b6b76efbe..b24f1b695 100644 --- a/util/gutil/gutil.go +++ b/util/gutil/gutil.go @@ -9,6 +9,7 @@ package gutil import ( "context" + "github.com/gogf/gf/v2/errors/gcode" "reflect" "github.com/gogf/gf/v2/errors/gerror" @@ -33,7 +34,7 @@ func Try(ctx context.Context, try func(ctx context.Context)) (err error) { if v, ok := exception.(error); ok && gerror.HasStack(v) { err = v } else { - err = gerror.Newf(`%+v`, exception) + err = gerror.NewCodef(gcode.CodeInternalPanic, "%+v", exception) } } }() @@ -49,7 +50,7 @@ func TryCatch(ctx context.Context, try func(ctx context.Context), catch ...func( if v, ok := exception.(error); ok && gerror.HasStack(v) { catch[0](ctx, v) } else { - catch[0](ctx, gerror.Newf(`%+v`, exception)) + catch[0](ctx, gerror.NewCodef(gcode.CodeInternalPanic, "%+v", exception)) } } }()