Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 错误处理:提取错误的上下文_Go - Fatal编程技术网

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,谢谢。你能看看这个密码吗。我把它放在代码审查中,因为它看起来是这个问题的更好的地方。当你谈论不同的类型时,你是指这种方法吗?