假设我有一些这样的代码:
value, err := some3rdpartylib.DoSomething()
if err != nil {
panic(err)
}
万一err != nil我会得到这样的东西:
panic: some error explanation here
goroutine 1 [running]:
main.main()
/tmp/blabla/main.go:6 +0x80
此堆栈跟踪是完全合法的,但有时这些错误消息可能无法说明发生了什么,因此我想深入研究 3rd 方库的源代码,以调查究竟是什么原因导致返回此错误。但是,当我的代码像这样发生混乱时,无法获得返回此错误的实际位置。
稍微澄清一点:因为我来自抛出异常的 JVM 世界,所以我可以完全跟踪抛出异常的代码行到底是哪一行,因此可以轻松找到位置并查看出了什么问题。Go 堆栈跟踪正好在我的代码发生混乱的地方结束,因此在我的情况下不太有用。
我在这里创建了一个操场,理想情况下我希望能够将错误追溯到它实际返回的地方,而不是恐慌。(例如第 17 行,return "", errors.New("some error explanation here"))
这甚至可能吗?
撒科打诨
炎炎设计
红颜莎娜
相关分类