123456789101112131415161718192021222324252627282930313233 |
- package rescue
- import (
- "context"
- "runtime/debug"
- "github.com/wuntsong-org/go-zero-plus/core/logx"
- )
- // Recover is used with defer to do cleanup on panics.
- // Use it like:
- //
- // defer Recover(func() {})
- func Recover(cleanups ...func()) {
- for _, cleanup := range cleanups {
- cleanup()
- }
- if p := recover(); p != nil {
- logx.ErrorStack(p)
- }
- }
- // RecoverCtx is used with defer to do cleanup on panics.
- func RecoverCtx(ctx context.Context, cleanups ...func()) {
- for _, cleanup := range cleanups {
- cleanup()
- }
- if p := recover(); p != nil {
- logx.WithContext(ctx).Errorf("%+v\n%s", p, debug.Stack())
- }
- }
|