检查错误消息的最惯用的方法是什么?我的用例是在中err := os.Remove(path),我认为成功是:A)如果 err == nil或者B)如果err != nil但由于找不到文件而引发错误。任何其他错误都应导致删除重试。目前,我已经将其包装成一个for { ... }循环并正在检查:if err == nil || strings.Contains(err.Error(), "no such file") { // Success} else { // Fail}由于文档说:如果有错误,它将是* PathError类型。我不认为有一种方法可以通过类型断言来检查。我缺少基本的东西吗?我在Go中进行错误处理时总是感到有些懈怠。
2 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
前几天我刚处理过。如果文件不存在,os.Remove()将产生来自的错误syscall.ENOENT。
因此,您可以使用如下逻辑:
if err != nil {
e, ok := err.(*os.PathError)
if ok && e.Err == syscall.ENOENT {
// The file didn't exist
w.WriteHeader(http.StatusNotFound)
return
} else {
// Error other than syscall.ENOENT
}
}
当然,如另一个答案所示,这os.IsNotExist()是简单而惯用的。希望我能在今天之前看到它。
- 2 回答
- 0 关注
- 260 浏览
添加回答
举报
0/150
提交
取消