29 lines
603 B
Go
29 lines
603 B
Go
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("主程序执行完成,无崩溃退出")
|
|
}
|