如何不为fs.readFileSync()捕获文件?

在node.js中,readFile()显示了如何捕获错误,但是对于readFileSync()函数,有关错误处理没有任何注释。这样,如果我在没有文件的情况下尝试使用readFileSync(),则会收到错误消息Error:

ENOENT, no such file or directory

如何捕获抛出的异常?Doco没有说明抛出了什么异常,所以我不知道需要捕获哪些异常。我应该注意,我不喜欢普通的“捕获每个可能的异常”样式的try /

catch语句。在这种情况下,我希望捕获文件不存在并且尝试执行readFileSync时发生的特定异常。

请注意,在执行连接尝试之前,我仅在启动时执行同步功能,因此不需要我不应该使用同步功能的注释:-)

回答:

基本上,fs.readFileSync当找不到文件时抛出错误。该错误来自Error原型,并使用抛出throw,因此捕获的唯一方法是使用try

/ catch块:

var fileContents;

try {

fileContents = fs.readFileSync('foo.bar');

} catch (err) {

// Here you get the error when the file was not found,

// but you also get any other error

}

不幸的是,仅通过查看其原型链就无法检测到抛出了哪个错误:

if (err instanceof Error)

是您可以做的最好的事情,对于大多数(如果不是全部)错误,这都是正确的。因此,我建议您使用该code属性并检查其值:

if (err.code === 'ENOENT') {

console.log('File not found!');

} else {

throw err;

}

这样,您仅处理该特定错误,然后重新抛出所有其他错误。

或者,您也可以访问错误的message属性以验证详细的错误消息,在这种情况下,该消息是:

ENOENT, no such file or directory 'foo.bar'

希望这可以帮助。

以上是 如何不为fs.readFileSync()捕获文件? 的全部内容, 来源链接: utcz.com/qa/407962.html

回到顶部