0

Node.js v.0.10.12 で例外オブジェクトの操作に問題があります。

コード: (test.js)

var _ = require('underscore');

var invalidJson = '{ this is bad }';

try {
    JSON.parse( invalidJson );
}

catch (exc) {
    var keys = Object.keys(exc);
    console.log('Exception keys (' + keys.length + '): ', keys);

    _.each(exc, function (value, key) {
        console.log('exc[' + key + '] = ' + value);
    });

    throw exc;
}

出力:

Exception keys (0):  []

test.js:21
    throw exc;
          ^
SyntaxError: Unexpected token t
    at Object.parse (native)
    at Object.<anonymous> (test.js:10:7)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3

例外が空のオブジェクトなのはなぜですか?

さらに、エラーは test.js:21 から発生すると報告されていますが、実際には「invalidJson」:1 にあります。そもそも例外をキャッチしないと、代わりに次のエラー メッセージが表示されます。

undefined:1
{ this is bad }
  ^
SyntaxError: Unexpected token t

例外を再スローするときに、この情報を「転送」するにはどうすればよいですか?

4

2 に答える 2