为了账号安全,请及时绑定邮箱和手机立即绑定

检查来自os.Remove的错误消息

检查来自os.Remove的错误消息

Go
叮当猫咪 2021-04-09 17:19:37
检查错误消息的最惯用的方法是什么?我的用例是在中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()是简单而惯用的。希望我能在今天之前看到它。


查看完整回答
反对 回复 2021-04-19
  • 2 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信