我有一段代码,它查找stat
文件,如果文件不存在,则返回一些默认值。也就是说,这段代码看起来如下所示:
fileInfo, err := os.Stat(absolutePath)
if err != nil {
if os.IsNotExist(err) {
return <default val>, nil
}
return nil, fmt.Errorf(...)
}
为了“捕捉”“文件不存在”错误,我读到建议使用os.IsNotExist
来检查错误是否指示文件不存在。由于平台返回open <blah>: no such file or directory
,因此os.IsNotExist
无法捕获此错误。我可以在此处添加自己的错误处理,但是否有惯用的方法来处理os
调用中的“file does not exist”错误?看起来os.IsNotExist
检查处理的错误是一种特殊情况,仅针对一种类型的潜在“文件不存在”错误。
1条答案
按热度按时间jckbn6z71#
如果您阅读文档,您将看到以下内容:
IsNotExist
返回一个布尔值,指示错误是否报告文件或目录不存在。ErrNotExist
以及某些syscall
错误满足此条件。此函数早于errors.Is。它仅支持os包返回的错误。新代码应使用
errors.Is(err, fs.ErrNotExist)
。[* Emp.mine *]