1

此代码在 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 回调中调用而形成的,并且调试它是现在绝对痛苦,无法获得有关错误的详细统计信息)

4

1 回答 1

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();
于 2012-11-05T21:21:35.223 回答