【问题标题】:fs detect handle different error typesfs 检测处理不同的错误类型
【发布时间】:2018-06-04 21:58:33
【问题描述】:

在我的 nodejs 应用程序中,我有以下功能:

    const special_handle= function(err){
         console.error("Special Handled",err);
    }

    const normal_handle= function(err){
         console.error("Normal Handled",err);
    }

    const callback = function(err,mime,data){
       if(err) {
           if(/*file does not exist*/){
                 return special_handle(err);
           } else {
                  return normal_handle(err);
           }
       }
    }

    fs.readFile(fileFullPath,(err,data)=>{
        if(err){
           return callback(err);
        }

        const mimeType = mime.lookup(fileFullPath);
        callback(null,mimeType,data);
    });

当文件不存在时我想要它做一个特殊处理而不是做正常处理。但是我怎么知道在我的回调中文件不存在呢?

【问题讨论】:

    标签: node.js callback fs


    【解决方案1】:

    如果文件/目录不存在,您将收到ENOENT 错误。然后,您可以使用 switch 或 if 子句来处理不同的结果。

    由不存在的文件/目录返回的典型 err 对象如下所示:

    { Error: ENOENT: no such file or directory, open 'test.js' errno: -2, code: 'ENOENT', syscall: 'open', path: 'test.js' }
    

    所以如果你想检查文件是否存在,你可以这样做:

    if (err.code === 'ENOENT') {
      return special_handle(err)
    } else {
      return normal_handle(err)
    }
    

    或者如果你想检查多种类型的错误,例如EPERM,当你的程序没有权限读取文件/目录时,你可以使用switch-clause:

    switch (err.code) {
      case 'ENOENT':
        return special_handle(err)
      case 'EPERM':
        return eperm_handle(err)
      case default:
        return normal_handle(err)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2012-02-28
      • 2015-09-24
      • 2021-12-21
      • 2018-04-19
      • 2017-08-28
      • 1970-01-01
      相关资源
      最近更新 更多