fix: improve panic recovery in main function

- Move panic recovery defer to the beginning of main function to ensure it can catch panics from all subsequent function calls

- Remove unused setupErrorRecovery function

- Add explanatory comment for the defer placement

This change ensures proper error handling throughout the entire program execution, rather than just within the setupErrorRecovery function scope.
This commit is contained in:
CC11001100 2025-04-08 17:28:39 +08:00
parent fc5ea3511b
commit ec954b3130

View File

@ -11,13 +11,13 @@ import (
"runtime/debug"
"strings"
"github.com/sirupsen/logrus"
"github.com/yuaotian/go-cursor-help/internal/config"
"github.com/yuaotian/go-cursor-help/internal/lang"
"github.com/yuaotian/go-cursor-help/internal/process"
"github.com/yuaotian/go-cursor-help/internal/ui"
"github.com/yuaotian/go-cursor-help/pkg/idgen"
"github.com/sirupsen/logrus"
)
// Global variables
@ -29,7 +29,15 @@ var (
)
func main() {
setupErrorRecovery()
// Place defer at the beginning of main to ensure it can catch panics from all subsequent function calls
defer func() {
if r := recover(); r != nil {
log.Errorf("Panic recovered: %v\n", r)
debug.PrintStack()
waitExit()
}
}()
handleFlags()
setupLogger()
@ -73,16 +81,6 @@ func main() {
}
}
func setupErrorRecovery() {
defer func() {
if r := recover(); r != nil {
log.Errorf("Panic recovered: %v\n", r)
debug.PrintStack()
waitExit()
}
}()
}
func handleFlags() {
flag.Parse()
if *showVersion {