在下面的代码中,无效的索引访问x[10]会导致死机。然而,产生的死机消息并没有显示错误的堆栈跟踪-相反,它看起来像这样:%!v(PANIC=String method: runtime error: index out of range [10] with length 3)。此外,程序不会终止,而是在死机发生后继续运行。
基于,Println似乎可以从String()方法中捕捉到异常并记录它们。我如何防止这种行为,使得1)我的程序在String()方法中的死机中终止,2)显示死机的完整堆栈跟踪?
package main
import (
"fmt"
)
type F
众所周知,死机会产生到标准输出()的堆栈跟踪。
panic: runtime error: index out of range
goroutine 1 [running]:
main.main()
/tmp/sandbox579134920/main.go:9 +0x20
似乎当你从一次恐慌中恢复过来时,recover()只返回一个描述引起恐慌的原因的error ()。
runtime error: index out of range
我的问题是,是否可以存储写入stdout的堆栈跟踪?这提供了比字符串runtime error: index out of range更好的调试信息