package main import ( "fmt" "runtime" ) // CatchPanic 通用恢复工具函数(工程化优化) func CatchPanic(tag string) { if err := recover(); err != nil { stack := make([]byte, 4096) stack = stack[:runtime.Stack(stack, false)] fmt.Printf("[%s] 捕获panic: %v\n堆栈: %s\n", tag, err, stack) } } // BasicDemo 基础恢复演示 func BasicRecover() { defer CatchPanic("基础演示") panic("redis 连接超时") } func main() { // 基础恢复演示 BasicRecover() println("----------------------------------------") fmt.Println("主程序执行完成,无崩溃退出") }