[英]Nodejs error handling in callback (xml-stream)
我使用xml-stream库来处理nodejs来解析一个大的xml文件。 效果很好。 但是我注意到,如果在xml流事件的回调中出现类似RefereceError的问题,nodejs只会退出而不通知我或抛出错误。
一个简短的示例是以下代码:
var fs = require('fs');
var XmlStream = require('xml-stream');
var stream = fs.createReadStream('E:/jdown2/dblp/dblp.xml');
var xml = new XmlStream(stream);
xml.on('endElement: article', function (data) {
console.log("article"); // works well
var demo = functionThatNotExists(data);
console.log("nodejs exit before this console log");
});
所以我的问题是,我怎么能到达它,那个nodejs告诉我有一个错误以及错误发生在哪里?
还是xml-stream不提供那个?
在像这样的普通回调函数中:
errorInCallback("test", function (err,data) {
console.log(err, data)
});
function errorInCallback(data, cb) {
var demo = functionThatNotExists(data);
var err = null;
return cb(err, demo)
}
所有的工作都像预期的那样,并且nodejs抛出ReferenceError
有人可以向我解释原因,也许如何解决吗?
提前致谢!
尝试为error
事件添加处理程序:
xml.on('error', function (err) {
console.log(err);
});
您是否要调用从xml.on
获取的数据不存在的函数? 如果是这样,则错误是从那里传来的,那么您应该处理它。
var fs = require('fs');
var XmlStream = require('xml-stream');
var stream = fs.createReadStream('E:/jdown2/dblp/dblp.xml');
var xml = new XmlStream(stream);
xml.on('endElement: article', function (data) {
console.log("article"); // works well
try {
var demo = functionThatNotExists(data);
if (demo == null) {
throw new Error('Something went wrong');
}
}
catch(e) {
console.log(e.name + ": " + e.message);
}
console.log("nodejs exit before this console log");
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.