打印堆栈信息
if r := recover(); r != nil {
// 捕获 panic 并记录堆栈信息
buf := make([]byte, 1024) // 可以根据实际需求调整大小
n := runtime.Stack(buf, false)
stackTrace := string(buf[:n])
// 记录错误和堆栈信息
log.Printf("Panic recovered: %v\nStack trace:\n%s", r, stackTrace)
// 返回系统错误
err := think.ErrSystemSpace(errors.New("系统错误-recover"))
// 这里可以进一步处理 err,例如将其返回给调用方
// 如果需要传递,可以通过某种方式将 err 传递出去
}
推荐文章: