无法从fs.createWriteStream()

时间:2017-04-08 12:10:41

标签: javascript node.js try-catch electron

在我的Electron应用程序的主要过程中,我正在尝试处理在创建已存在的文件时抛出的异常。但是,我的catch子句从未输入,并且异常被发送给用户。我做错了什么?

let file;
try {
    // this line throws *uncaught* exception if file exists - why???
    file = fs.createWriteStream('/path/to/existing/file', {flags: 'wx'}); 
}
catch (err) {
    // never gets here - why???
}

2 个答案:

答案 0 :(得分:5)

处理此案例的正确方法是收听error事件:

const file = fs.createWriteStream('/path/to/existing/file', {flags: 'wx'});
file.on('error', function(err) {
    console.log(err);
    file.end();
});

答案 1 :(得分:1)

我发现的是: this doc

我尝试使用纯Node.js进行复制,并使用process.on('uncaughtException', callback)

捕获错误
let desiredPath = '/mnt/c/hello.txt';
let fs = require('fs');

process.on('uncaughtException', function (error) {
    console.log('hello1');
});

try {
  fs.createWriteStream(desiredPath, {
    flags: 'wx',
  });
}
catch (err) {
  console.log('hello');
}

//Output is: 'hello1'

我在Windows 10上尝试使用Ubuntu shell,在我的情况下,我没有权限读取该文件,process.on('uncaughtException', callback)正确捕获它。