首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go Println由于String()中的死机而取消stack-trace

Go Println由于String()中的死机而取消stack-trace
EN

Stack Overflow用户
提问于 2020-03-17 15:06:37
回答 1查看 121关注 0票数 0

在下面的代码中,无效的索引访问x[10]会导致死机。然而,产生的死机消息并没有显示错误的堆栈跟踪-相反,它看起来像这样:%!v(PANIC=String method: runtime error: index out of range [10] with length 3)。此外,程序不会终止,而是在死机发生后继续运行。

基于this answerPrintln似乎可以从String()方法中捕捉到异常并记录它们。我如何防止这种行为,使得1)我的程序在String()方法中的死机中终止,2)显示死机的完整堆栈跟踪?

代码语言:javascript
复制
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")
}
EN

回答 1

Stack Overflow用户

发布于 2020-03-17 15:44:21

只需打印.String()的结果

代码语言:javascript
复制
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")
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60717658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档