在我的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???
}
答案 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)
正确捕获它。