JS中的重新出现错误很容易:
try {
//some code that fails
} catch(e) {
throw getMyOwnErrorObj(e);
}
如何在nodejs流中实现此目的。 Afaik,我只能通过收听流的error
事件来捕获错误。但是,如何捕获错误并重新抛出该错误(或其他错误)?
我当然可以使用我自己的流实现来包装流,以修改事件发射器的行为。但我正在寻找一个更有魅力的解决方案。
我的用例:
我想要工作的一个简单例子是:
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。根据最新评论的用例和示例进行了更新