代码之家  ›  专栏  ›  技术社区  ›  hookenz

Golang错误和文档

  •  0
  • hookenz  · 技术社区  · 8 年前

    不幸的是,标准库中的golang错误文档几乎不存在。e、 g.只需打开一个文件,就不会记录错误的返回值,只需打印一个字符串即可。但这并不总是正确的处理方式。

    有没有办法通过反复试验而不是仅仅打印文本来确定真正的错误代码?根据具体错误匹配全文似乎很愚蠢。

    e、 g.鉴于我希望最终实现这样的目标(假设它是正确的)

    if fd, err := io.Open("filename"); err != nil {
      if err != io.ErrFileNotFound {
        log.Fatalf("Error opening file: %s", err)
      }
    }
    

    据我所知,任何实现错误接口的东西都可以用作错误。但确定错误是什么是我正在努力解决的问题。错误可能是一个结构,其中有其他字段,比如数字字段,用来告诉我除了文本本身之外,它是什么类型的错误。 但是,我怎么知道这个错误还包含哪些其他数据呢?除了查看许多源文件,有时还要查看几十个函数调用。

    这有意义吗?

    作为一个更实际的例子。我正在使用yaml库加载配置文件。 如果配置文件不存在,我想继续(它将使用默认值)。但如果有权限错误,我希望该错误被视为致命错误。问题是,目前还不完全清楚提前会出现什么样的错误。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Cerise Limón    8 年前

    使用 os.IsNotExist 要检查“未找到文件”错误,请执行以下操作:

    f, err := os.Open("filename")
    if os.IsNotExist(err) {
      // handle missing file
    } else if err != nil {
      // handle other errors
    }
    

    功能 os.IsExist , os.IsPermission is.Timeout 检查其他常见类型的错误。

    这个 os , io 和其他包为特定错误声明变量。

        2
  •  0
  •   Sodimu Segun Michael    8 年前

    如果你不清楚图书馆的情况,一定要查看godoc。 .下面是godoc io URL,请阅读更多信息

    https://godoc.org/io