Go 错误处理:提取错误的上下文
我有一个返回Go 错误处理:提取错误的上下文,go,Go,我有一个返回错误的函数: func foo(i int) error { err := errors.New("error here") if i == 1 { return errors.Wrap(err, "one") } if i == 2 { return errors.Wrap(err, "two") } return nil } 我想处理调用函数中的错误,但要做到这一点,我需要知道错误的上下文
错误的函数
:
func foo(i int) error {
err := errors.New("error here")
if i == 1 {
return errors.Wrap(err, "one")
}
if i == 2 {
return errors.Wrap(err, "two")
}
return nil
}
我想处理调用函数中的错误,但要做到这一点,我需要知道错误的上下文。大概是这样的:
err := foo(i)
switch err.getContext() {
case "foo":
case "bar":
}
我已经找到了接口,但我不知道如何在这里使用它
或者我是否需要在此处为每种类型的错误创建不同的类型(
struct
)?您可以使用该函数检查错误类型或访问其内部错误。什么是“错误上下文”?Go中没有这样的东西,@Volker,我之所以使用这项工作,是因为在文档中使用了它-错误。Wrap函数返回一个新错误,为原始错误添加上下文-
-我在问题中发布了链接。这是非正式语言。提到的“上下文”是附加文本,没有(可靠的方式)获得它。(吹毛求疵:添加stacktrace在这里也是“上下文”,您可以获得stacktrace,但这不是您在这里要做的)。这是好的:这个“背景”是供人类消费的。如果您需要区分错误:请使用不同的类型或具有此区分标准的类型。@Volker,谢谢。你能看看这个密码吗。我把它放在代码审查中,因为它看起来是这个问题的更好的地方。当你谈论不同的类型时,你是指这种方法吗?