returns an error (wrapping the panic) if a panic occurred
(debugStr string, recoverVal any)
| 23 | |
| 24 | // returns an error (wrapping the panic) if a panic occurred |
| 25 | func PanicHandler(debugStr string, recoverVal any) error { |
| 26 | if recoverVal == nil { |
| 27 | return nil |
| 28 | } |
| 29 | log.Printf("[panic] in %s: %v\n", debugStr, recoverVal) |
| 30 | debug.PrintStack() |
| 31 | if PanicTelemetryHandler != nil { |
| 32 | go func() { |
| 33 | defer func() { |
| 34 | PanicHandlerNoTelemetry("PanicTelemetryHandler", recover()) |
| 35 | }() |
| 36 | PanicTelemetryHandler(debugStr) |
| 37 | }() |
| 38 | } |
| 39 | if err, ok := recoverVal.(error); ok { |
| 40 | return fmt.Errorf("panic in %s: %w", debugStr, err) |
| 41 | } |
| 42 | return fmt.Errorf("panic in %s: %v", debugStr, recoverVal) |
| 43 | } |
no test coverage detected