在下面的代码中,无效的索引访问x[10]会导致死机。然而,产生的死机消息并没有显示错误的堆栈跟踪-相反,它看起来像这样:%!v(PANIC=String method: runtime error: index out of range [10] with length 3)。此外,程序不会终止,而是在死机发生后继续运行。
基于this answer,Println似乎可以从String()方法中捕捉到异常并记录它们。我如何防止这种行为,使得1)我的程序在String()方法中的死机中终止,2)显示死机的完整堆栈跟踪?
package main
import (
"fmt"
)
type Foo struct {
}
func (foo Foo) String() string {
var x = "123"
return fmt.Sprintf("%v", x[10]) // invalid index
}
func main() {
fmt.Println(Foo{})
fmt.Println("done")
}发布于 2020-03-17 15:44:21
只需打印.String()的结果
package main
import (
"fmt"
)
type Foo struct {
}
func (foo Foo) String() string {
var x = "123"
return fmt.Sprintf("%v", x[10])
}
func main() {
fmt.Println(Foo{}.String())
fmt.Println("done")
}https://stackoverflow.com/questions/60717658
复制相似问题