在由于外部库错误而发生恐慌的情况下,最好追溯错误到它在图书馆代码中的起源。虽然默认的 Go 堆栈跟踪仅指向恐慌行,但需要进行更深入的调查。
为了实现这一点,“error”包提供了一个名为“stackTracer”的接口,可以访问错误的堆栈跟踪。通过包装原始错误并实现此接口,可以发现错误的实际来源。
type stackTracer interface { StackTrace() errors.StackTrace }
要从包装的错误中检索堆栈跟踪:
err, ok := err.(stackTracer) if ok { stack := err.StackTrace() fmt.Println(stack) }
此外,一些第三方库提供了不同程度的错误处理功能功能:
以上是如何获取详细的堆栈跟踪来调试源自外部 Go 库的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!