当前位置: 首页 > 面试题库 >

Go中的错误(* os.PathError)是什么?

东深
2023-03-14
问题内容

当我阅读时:http :
//golang.org/doc/effective_go.html#errors

我发现了这样一行:err.(*os.PathError)在这种情况下:

for try := 0; try < 2; try++ {
    file, err = os.Create(filename)
    if err == nil {
        return
    }
    if e, ok := err.(*os.PathError); ok && e.Err == syscall.ENOSPC {
        deleteTempFiles()  // Recover some space.
        continue
    }
    return }

err.(*os.PathError)Go 到底是什么?


问题答案:

os.Create返回错误作为第二个返回值。错误本身是一个接口
type error interface { Error() string }。碰巧具有Error方法的任何数据类型都将实现该接口并可以进行分配。

在大多数情况下,仅打印错误就足够了,但是在此示例中,您想ENOSPC显式处理(设备上不留空间)。该os包返回*os.PathError在这种情况下,错误的实现,如果你想对错误的访问更多的信息,即一切旁边Error() string方法,你就必须把它转换。

该语句e, ok := err.(*os.PathError)是类型断言。它将检查接口值是否err包含*os.PathErroras具体类型,并将其返回。如果接口中存储了其他类型(可能有其他类型的error接口实现),则它将仅返回零值和false,即nil, false在这种情况下。



 类似资料:
  • 问题内容: 什么是python中的“错误魔术数字” ImportError,如何解决? 我在网上可以找到的唯一东西表明,这是由于编译.py-> .pyc文件,然后尝试将其与错误版本的python一起使用而引起的。但是,就我而言,该文件有时可以很好地导入,而其他时候则不能,并且我不确定为什么。 python在回溯中提供的信息不是特别有用(这就是为什么我在这里询问…的原因),但是在这里它是有帮助的:

  • 问题内容: 什么是python中的“错误的魔术数字” ,如何解决? 我只能在网上找到的唯一东西表明,这是由于编译文件,然后尝试将其与错误版本的python一起使用而引起的。但是,就我而言,该文件似乎有时可以很好地导入,而其他时候则不能,并且我不确定为什么。 python在回溯中提供的信息并不是特别有用(这就是为什么我在这里询问…的原因),但在这里是有帮助的: 问题答案: 幻数来自UNIX类型的系统

  • 问题内容: 最近,人们对Go提出了很多批评,因为它不支持泛型。这到底是什么意思呢?您如何向不熟悉这种动态类型语言(如Ruby)的人解释这一点? 问题答案: 在动态类型语言中,您不必关心列表是什么类型,而只是列表。但是,在静态类型的语言中,您确实在意列表的类型,因为类型是“ A的列表”,其中“ A”是某种类型。也就是说,a 与的类型不同。 因此,当您谈到泛型时,调用类型为列表中每个项目的某个函数时,

  • 问题内容: 这段代码在: 最后一行使我感到非常困惑。我不知道的意思。 这些是其他代码: 结果是 我猜想的功能是从中选择所有元素,但是我还没有找到正式的解释。它是什么? 问题答案: builtin.go中的代码用作文档。该代码未编译。 在指出这个函数的最后一个参数是可变参数。可变参数在Go语言规范中进行了说明。 该类型的部分为任何围棋类型替身。

  • 问题内容: 我今天早上收到此错误,找不到合理的解释: 我认为这是在我拍照时发生的。我可以根据要求显示完整的代码段。但是,这是教程中的示例代码。它只出现一次,并且在线上也没有太多解释。 我已在处打开断点和符号断点。但是,如果未设置这些断点,也会显示此错误。 当出现此错误时,两个断点均未调用。 这是什么? 问题答案: XPC 是Apple的进程间通信(IPC)系统。某些功能(例如h.264编码/解码或

  • 问题内容: javax.servlet.AsyncContext接口的javadoc说: 如果异步操作已超时,则容器必须通过以下步骤运行: 以其方法调用在其上 启动了异步操作的所有注册实例。 如果没有调用 任何侦听器或任何方法,请使用状态代码等于的方式执行错误分配。 如果未找到匹配的错误页面,或者未调用错误页面 或任何方法,请调用。 但是我在任何地方都找不到“错误分发”的含义。实际上,有一个Apa