gpt4 book ai didi

coding-style - 在 Go 中调用 os.Open() 时如何检查错误?

转载 作者:IT王子 更新时间:2023-10-29 01:56:07 25 4
gpt4 key购买 nike

我是 Go 的新手(到目前为止花了 30 分钟!)并且正在尝试执行文件 I/O。

  file, ok := os.Open("../../sample.txt")
if ok != nil {
// error handling code here
os.Exit(1)
}
...

调用失败时,不应该返回一个错误号吗?此调用返回 os.Error,并且除了“String()”之外没有其他方法。

这是推荐的检查 Go 错误的方法吗?

最佳答案

典型的 Go 代码(使用 os 包)不分析返回的错误对象。它只是将错误消息打印给用户(然后用户根据打印的消息知道出了什么问题)或将错误原样返回给调用者。

如果你想阻止你的程序打开一个不存在的文件,或者想检查文件是否可读/可写,我建议使用os.Stat。打开文件之前的功能。

你可以分析返回错误的Go类型,但这似乎很不方便:

package main

import "fmt"
import "os"

func main() {
_, err := os.Open("non-existent")
if err != nil {
fmt.Printf("err has type %T\n", err)
if err2, ok := err.(*os.PathError); ok {
fmt.Printf("err2 has type %T\n", err2.Error)
if errno, ok := err2.Error.(os.Errno); ok {
fmt.Fprintf(os.Stderr, "errno=%d\n", int64(errno))
}
}

fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(1)
}
}

打印:

err has type *os.PathError
err2 has type os.Errno
errno=2
open non-existent: no such file or directory

关于coding-style - 在 Go 中调用 os.Open(<filename>) 时如何检查错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596074/

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