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これは非同期であるため、 への呼び出しをa で囲むことはできません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 に答える