Javascript 从JS流中重试错误
在JS中重新引用错误很容易:Javascript 从JS流中重试错误,javascript,node.js,Javascript,Node.js,在JS中重新引用错误很容易: try { //some code that fails } catch(e) { throw getMyOwnErrorObj(e); } 如何在nodejs流中实现这一点。好了,我只能通过监听流的error事件来捕获错误。但是如何捕捉错误并重新显示该错误(或其他错误)? 当然,我可以用自己的流实现包装流,修改事件发射器的行为。但我正在寻找一个更迷人的解决方案 我的用例: 我需要解析一些文件 这些文件可以是gzip、tarred、bzipped
try {
//some code that fails
} catch(e) {
throw getMyOwnErrorObj(e);
}
如何在nodejs流中实现这一点。好了,我只能通过监听流的error
事件来捕获错误。但是如何捕捉错误并重新显示该错误(或其他错误)?
当然,我可以用自己的流实现包装流,修改事件发射器的行为。但我正在寻找一个更迷人的解决方案
我的用例:
- 我需要解析一些文件
- 这些文件可以是gzip、tarred、bzipped或其他文件,也可以是这些文件的组合。读取流的前x字节以决定首先使用哪个流
- 由于流的顺序、类型和数量不是固定的,所以我使用将流“粘合”在一起。Pumpify将一组流组合成一个双工流,并带有一个错误事件。也就是说,这个库将另一个错误侦听器附加到我的流李>
var pumpify = require("pumpify");
var tar = require("tar-fs");
var zlib = require("zlib");
var fs = require("fs");
var untar = pumpify(
zlib.createGunzip().on("error", function(e) {
//I'd like to rethrow an error here, so other error event listeners will catch _my_ error
//this below doesnt work (Maximum call stack size exceeded)
this.emit('error', new MyError(e));
}),
tar.extract("output-folder")
);
fs.createReadStream("./some-file-that-isnt-gzipped").pipe(untar).on("error", function(e) {
//I'd like e to be intanceof MyError here...
});
ps.根据最新评论更新了用例和示例您能展示一个用例吗?看看你有没有试着把错误发回来?你能展示一个用例吗?看看你有没有试着把错误发回来?