Node.js fs readFileSync方法可能引发哪些错误?

Node.js fs readFileSync方法可能引发哪些错误?,node.js,Node.js,我已经仔细阅读了文档,我知道很难记录由各种元素引发的所有可能的错误。我努力记录在自己的API中抛出的错误。但这并不能改变这样一个事实,即能够知道任何给定的方法都会抛出哪些错误是非常方便的。希望其他人可能已经在这条路上,可以提供一个列表或链接。在本例中,我特别感兴趣的是调用会抛出什么。要了解这一点,请查看forreadFileSync。全文如下: function readFileSync(path, options) { options = getOptions(options, { fla

我已经仔细阅读了文档,我知道很难记录由各种元素引发的所有可能的错误。我努力记录在自己的API中抛出的错误。但这并不能改变这样一个事实,即能够知道任何给定的方法都会抛出哪些错误是非常方便的。希望其他人可能已经在这条路上,可以提供一个列表或链接。在本例中,我特别感兴趣的是调用

会抛出什么。要了解这一点,请查看for
readFileSync
。全文如下:

function readFileSync(path, options) {
  options = getOptions(options, { flag: 'r' });
  const isUserFd = isFd(path); // File descriptor ownership
  const fd = isUserFd ? path : fs.openSync(path, options.flag, 0o666);

  const stats = tryStatSync(fd, isUserFd);
  const size = isFileType(stats, S_IFREG) ? stats[8] : 0;
  let pos = 0;
  let buffer; // Single buffer with file data
  let buffers; // List for when size is unknown

  if (size === 0) {
    buffers = [];
  } else {
    buffer = tryCreateBuffer(size, fd, isUserFd);
  }

  let bytesRead;

  if (size !== 0) {
    do {
      bytesRead = tryReadSync(fd, isUserFd, buffer, pos, size - pos);
      pos += bytesRead;
    } while (bytesRead !== 0 && pos < size);
  } else {
    do {
      // The kernel lies about many files.
      // Go ahead and try to read some bytes.
      buffer = Buffer.allocUnsafe(8192);
      bytesRead = tryReadSync(fd, isUserFd, buffer, 0, 8192);
      if (bytesRead !== 0) {
        ArrayPrototypePush(buffers, buffer.slice(0, bytesRead));
      }
      pos += bytesRead;
    } while (bytesRead !== 0);
  }

  if (!isUserFd)
    fs.closeSync(fd);

  if (size === 0) {
    // Data was collected into the buffers list.
    buffer = Buffer.concat(buffers, pos);
  } else if (pos < size) {
    buffer = buffer.slice(0, pos);
  }

  if (options.encoding) buffer = buffer.toString(options.encoding);
  return buffer;
}
函数readFileSync(路径、选项){ options=getOptions(选项,{flag:'r'}); const isUserFd=isFd(path);//文件描述符所有权 const fd=isUserFd?路径:fs.openSync(路径,options.flag,0o666); const stats=tryStatSync(fd,isUserFd); const size=isFileType(stats,S_IFREG)?stats[8]:0; 设pos=0; let buffer;//包含文件数据的单个缓冲区 let buffers;//当大小未知时的列表 如果(大小==0){ 缓冲区=[]; }否则{ buffer=tryCreateBuffer(大小、fd、isUserFd); } 让过去的事读吧; 如果(大小!==0){ 做{ bytesRead=tryReadSync(fd,isUserFd,buffer,pos,size-pos); pos+=字节读取; }while(bytesRead!==0&&pos
getOptions
a
ERR\u INVALID\u ARG\u TYPE
异常,如果
options
参数的类型不正确

调用
fs.openSync
将导致被调用,这也会引发
ERR\u INVALID\u ARG\u TYPE
错误,或者通过
nullCheck
(在
utils.js
)抛出
ERR\u INVALID\u ARG\u值

tryCreateBuffer
可以抛出
ERR\u FS\u FILE\u过大

等等。获取所有可能错误的列表将是一项艰巨的任务-您必须递归地完成所有可能的函数调用-但这是可行的。

同意,这是一项艰巨的任务(可能会自动创建nodejs文档的附录),但也是可行的。。。而且值得!我想补充一点。。。谢谢:)