javascript - JS / Node try catch (避免出错)
问题描述
我在 node.js 中有一个函数,它将一个文件从一个文件夹复制到另一个:
function copyfile(source,target) {
try {
fs.createReadStream(source).pipe(fs.createWriteStream(target));
}
catch(err) {
console.log(`There was an error - ${err}`);
}
}
copyfile('source/134.txt', 'target/1b.txt');
文件134.txt
不存在,所以我希望我会在捕获区域中得到错误,但我得到了这个:
events.js:183 throw er; // Unhandled 'error' event
我怎样才能改变它,所以我得到指定的错误,而不是像现在这样中断?
解决方案
您需要将错误事件附加到每个流:
function copyfile(source, target) {
fs.createReadStream(source).on('error', function (e) {
console.log(e)
}).pipe(fs.createWriteStream(target).on('error', function (e) {
console.log(e)
}))
}
如果可以使用 node10+ 还有其他不错的解决方案
推荐阅读
- java - 读取托管非常大数据的 REST api 响应
- haskell - 中缀模式匹配
- android - 如何找到加载在android webview的同一页面或不同页面中的URL?
- highcharts - 移动设备上的引导程序(不渲染导致挂起问题)
- sql - 嵌套 IIF 和 ISNULL 以返回最后一条记录
- php - 在 PHP 中按日期排序数组,另一个按日期排序
- jquery - 发出 JQuery 异常的 Hugo Markdown 脚注
- javascript - JS 中代码战练习的问题,预填充数组;初级水平
- c# - 如何将自定义标头添加到 SignalR 的 Typescript 客户端?
- python - 在另一个 Tkinter 类的一个 Tkinter 类中编辑/添加 Tkinter 小部件