2 回答
TA贡献1719条经验 获得超6个赞
典型的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
- 2 回答
- 0 关注
- 325 浏览
添加回答
举报