当抛出异常时,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
我可以在捕获后从异常中获取位置信息吗?