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