相关疑难解决方法(0)

如何让堆栈跟踪指向Golang中的实际错误原因?

假设我有一些像这样的代码:

value, err := some3rdpartylib.DoSomething()
if err != nil {
    panic(err)
}
Run Code Online (Sandbox Code Playgroud)

万一err != nil我会得到这样的东西:

panic: some error explanation here

goroutine 1 [running]:
main.main()
    /tmp/blabla/main.go:6 +0x80
Run Code Online (Sandbox Code Playgroud)

这个堆栈跟踪是完全合法的,但有时这些错误消息可能无法澄清发生了什么,所以我想深入研究第三方库的源代码,以调查究竟是什么原因导致返回此错误.但是,当我的代码像这样恐慌时,无法获得返回此错误的实际位置.

稍微澄清一点:因为我来自JVM世界,抛出异常,我可以完全跟踪抛出异常的确切代码行,从而可以轻松找到该位置,看看出了什么问题.Go堆栈跟踪正好在我的代码恐慌的地方结束,因此在我的情况下不太有用.

我在这里创建了一个游乐场,理想情况下我希望能够将错误追踪到它实际返回的地方,而不是恐慌.(例如到第17行return "", errors.New("some error explanation here"))

这甚至可能吗?

go

14
推荐指数
5
解决办法
7010
查看次数

标签 统计

go ×1