是否可以“重新抛出”错误recover并保留原始堆栈跟踪?我知道怎么做的最好的方法是再次恐慌,但这确实会创建一个新的堆栈跟踪。
func do() {
defer func() {
cleanUp()
if x := recover(); x != nil {
handleError()
panic(x)
}
}()
doStuff()
}
我想要这个的动机是,除非我的函数正常退出或handleError运行,否则我的程序会死锁。除非我保留原来的 strack 痕迹,否则我不知道它在哪里坠毁。
波斯汪
慕仙森
相关分类