gpt4 book ai didi

go - 错误处理设计-需要根据错误类型在函数堆栈的顶部处理错误,但需要在堆栈中添加信息

转载 作者:行者123 更新时间:2023-12-01 21:13:19 24 4
gpt4 key购买 nike

我需要在Go中重构代码,以便传播到主要功能的不同类型的错误将导致采取不同的处理措施。在任何情况下,都应记录错误消息。

我通常只会有不同类型的错误,并且它们是从基本错误类派生的,每个错误类对应于我要采取的一种操作。
此方法不适用于此代码,因为错误会不断被重写,以便为错误字符串添加更多上下文。

例如。 --

func start_something(...)(...){
var, err = get_something()
if err != nil {
return fmt.Errorf("unable to start something: %w", err.string())
}
}

我可以将魔术字符串添加到错误中,然后解析main中的错误消息。这感觉太难看了。
将不胜感激如何编写此建议的任何方向。尤其是从那些具有Go语言编写经验的人那里,可以将我带到正确的Go语言编写方法中。

谢谢,

最佳答案

使用fmt.Errorf("unable to start something: %w", err)包装错误。您可以通过实现errors软件包文档中所述的Unwrap() error方法来创建自己的错误包装程序。

使用errors.As查找与目标类型匹配的包装错误链中的第一个错误。

使用errors.Is确定包装的错误链中的任何错误是否与目标类型匹配。

关于go - 错误处理设计-需要根据错误类型在函数堆栈的顶部处理错误,但需要在堆栈中添加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62245521/

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