如何捕获jsdom.jqueryify回调引发的错误?

时间:2012-04-05 23:03:45

标签: javascript node.js jsdom

在node.js中运行时,此代码的输出是在最后一行(第9行)上发生的错误的堆栈跟踪。第7行发生的错误以某种方式被节点“吸收”。即使我将它包装在try / catch语句中,我似乎也无法获得与节点的默认错误处理代码一样详细的堆栈跟踪输出。

如何在第7行捕获错误并从第9行获取尽可能多的详细信息?

jsdom = require('jsdom');
var testHTML = "<html><head><title>Hi!</title></head><body><p>Hi!</p></body></html>";
jsdom.jQueryify(
    jsdom.jsdom(testHTML).createWindow(),
    'http://code.jquery.com/jquery-1.4.2.min.js' ,
    function() {
        var a = broken();
    });
var a = broken();

(注意:这是一个简单的例子,来自一个更复杂的脚本,我写的是一个'深层'嵌套堆栈中出现的错误,这些堆栈是由于在jQueryify回调中调用而形成的,并且正在调试这是一个绝对的痛苦,现在无法获得关于错误的详细统计数据)

1 个答案:

答案 0 :(得分:0)

这是异步的,因此您无法在try/catch的呼叫周围放置jQueryify。您必须在回调中的顶级回调中添加try catch

jsdom = require('jsdom');
var testHTML = "<html><head><title>Hi!</title></head><body><p>Hi!</p></body></html>";
jsdom.jQueryify(
    jsdom.jsdom(testHTML).createWindow(),
    'http://code.jquery.com/jquery-1.4.2.min.js' ,
    function() {

        try {
            var a = broken();
        } catch(e) {
            // Handle the error here
        }
    });
var a = broken();