package main import ( "fmt" "runtime" ) // ServiceRecover 服务级 panic 恢复,保证服务不宕机 func ServiceRecover() { defer func() { if err := recover(); err != nil { // 获取堆栈信息 stackBuf := make([]byte, 4096) stackBuf = stackBuf[:runtime.Stack(stackBuf, false)] fmt.Printf("[服务演示] 捕获异常: %v\n堆栈信息: %s\n", err, stackBuf) } }() fmt.Println("[服务演示] 处理 HTTP 请求") handleReq() } func handleReq() { panic("请求参数格式错误") } func main() { // 服务级恢复演示 ServiceRecover() println("----------------------------------------") fmt.Println("主程序执行完成,无崩溃退出") }