Browse Source

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.
pull/434/head
CC11001100 2 months ago
parent
commit
ec954b3130
  1. 24
      cmd/cursor-id-modifier/main.go

24
cmd/cursor-id-modifier/main.go

@ -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 {

Loading…
Cancel
Save