gpt4 book ai didi

go - 如何准确标记错误以符合golang

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:14 29 4
gpt4 key购买 nike

我似乎有这个答案并使用@OneOfOne 答案。 How do you get a Golang program to print the line number of the error it just called?

但是还有一些问题。

func FancyHandleError(err error) (b bool) {
if err != nil {
pc, fn, line, _ := runtime.Caller(1)
log.Printf("[error] in %s[%s:%d] %v", runtime.FuncForPC(pc).Name(), fn, line, err)
b = true
}
return
}

func main(){
FancyHandleError(funcA())
}

func funcA()error{
err := funcB()
return err
}

func funcB()error{
err := funcC()
return err
}

func funcC()error{
err := errors.New("deep errors!!") //I want to get the location in here!!!!!!!!!!!!!!!!!!!!!!
return err
}

它将打印“[error] in main.main[/root/temp/error.go:23]”这是在函数 main 的行号中。

但是如何在函数C()中定位错误的行号呢?

最佳答案

参见 runtime.Caller这将为您提供所需的所有详细信息。

您的自定义 NewError 函数可能如下所示:

func NewError(message string) error {
_, file, line, _ := runtime.Caller(1)
return fmt.Errorf("[%s][%d] : %s" , file, line, message)
}

这是示例的播放链接 play

关于go - 如何准确标记错误以符合golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41357993/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com