在node.js中打印捕获的异常的确切位置

时间:2014-04-25 05:37:04

标签: javascript node.js

当抛出异常时,node.js使用^符号提供非常有用的精确位置。我想知道在捕获异常后是否可以输出相同的内容。

例如,运行的输出:

var str = '{"regex" : "[\\S]+IS"}';
JSON.parse(str);

给出:

undefined:1
{"regex" : "[\S]+IS"}
              ^
SyntaxError: Unexpected token S
    at Object.parse (native)
    at Object.<anonymous> (/home/bcho/tmp/exception_test.js:2:6)
    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

^指向令牌S的确切位置。(这有助于将其与代码中的其他S区分开来。)

然而,当我跑步时:

var str = '{"regex" : "[\\S]+IS"}';
try {
    JSON.parse(str);
} catch(e) {
    console.log(e.stack);
    console.log(e.message);
}

堆栈和消息都不包含该位置信息:

SyntaxError: Unexpected token S
    at Object.parse (native)
    at Object.<anonymous> (/home/bcho/tmp/exception_test_catch.js:3:10)
    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
Unexpected token S

我可以在捕获后从异常中获取位置信息吗?

0 个答案:

没有答案