node build fixed
This commit is contained in:
73
seanime-2.9.10/internal/util/panic.go
Normal file
73
seanime-2.9.10/internal/util/panic.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"github.com/rs/zerolog/log"
|
||||
"runtime/debug"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var printLock = sync.Mutex{}
|
||||
|
||||
func printRuntimeError(r any, module string) string {
|
||||
printLock.Lock()
|
||||
debugStr := string(debug.Stack())
|
||||
logger := NewLogger()
|
||||
log.Error().Msgf("go: PANIC RECOVERY")
|
||||
if module != "" {
|
||||
log.Error().Msgf("go: Runtime error in \"%s\"", module)
|
||||
}
|
||||
log.Error().Msgf("go: A runtime error occurred, please send the logs to the developer\n")
|
||||
log.Printf("go: ========================================= Stack Trace =========================================\n")
|
||||
logger.Error().Msgf("%+v\n\n%+v", r, debugStr)
|
||||
log.Printf("go: ===================================== End of Stack Trace ======================================\n")
|
||||
printLock.Unlock()
|
||||
return debugStr
|
||||
}
|
||||
|
||||
func HandlePanicWithError(err *error) {
|
||||
if r := recover(); r != nil {
|
||||
*err = errors.New("fatal error occurred, please report this issue")
|
||||
printRuntimeError(r, "")
|
||||
}
|
||||
}
|
||||
|
||||
func HandlePanicInModuleWithError(module string, err *error) {
|
||||
if r := recover(); r != nil {
|
||||
*err = errors.New("fatal error occurred, please report this issue")
|
||||
printRuntimeError(r, module)
|
||||
}
|
||||
}
|
||||
|
||||
func HandlePanicThen(f func()) {
|
||||
if r := recover(); r != nil {
|
||||
f()
|
||||
printRuntimeError(r, "")
|
||||
}
|
||||
}
|
||||
|
||||
func HandlePanicInModuleThen(module string, f func()) {
|
||||
if r := recover(); r != nil {
|
||||
f()
|
||||
printRuntimeError(r, module)
|
||||
}
|
||||
}
|
||||
|
||||
func HandlePanicInModuleThenS(module string, f func(stackTrace string)) {
|
||||
if r := recover(); r != nil {
|
||||
str := printRuntimeError(r, module)
|
||||
f(str)
|
||||
}
|
||||
}
|
||||
|
||||
func Recover() {
|
||||
if r := recover(); r != nil {
|
||||
printRuntimeError(r, "")
|
||||
}
|
||||
}
|
||||
|
||||
func RecoverInModule(module string) {
|
||||
if r := recover(); r != nil {
|
||||
printRuntimeError(r, module)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user