2013-01-11 58 views
6

我有一个简单的例子:如何打印错误与尝试处理的消息,赶

var str = '{ "test" : 1, }' 

try { 
    JSON.parse(str); 
} catch (e) { 
    console.log(e) 
} 

结果:

[语法错误:意外的令牌}]

如何打印所有的错误信息?

预期的结果:

undefined:1 
{ "test" : 1, } 
     ^
SyntaxError: Unexpected token } 
+0

错误对象中没有关于哪个字符导致错误的信息,如果这是您要查找的内容。 – Cerbrus

回答

6

这将帮助:

var x = { asd: "asd", }; 

try { 
    JSON.parse(x); 
} 
catch (e) { 
    console.log("Error", e.stack); 
    console.log("Error", e.name); 
    console.log("Error", e.message); 
} 

error.stack是不是你想要什么,但它会帮助你。

2

这将显示的各种方法中,你可以得到可用的信息:

var str = '{"test": 1, }'; 

try { 
    JSON.parse(str); 
} catch(e) { 

    console.log("error object:"); 
    console.log(e); 
    console.log(); 

    console.log("error object toString():"); 
    console.log("\t" + e.toString()); 

    console.log(); 
    console.log("error object attributes: "); 
    console.log('\tname: ' + e.name + ' message: ' + e.message + ' at: ' + e.at + ' text: ' + e.text); 

    console.log(); 
    console.log("error object stack: "); 
    console.log(e.stack); 
} 

输出是:

error object: 
[SyntaxError: Unexpected token }] 

error object toString(): 
    SyntaxError: Unexpected token } 

error object attributes: 
    name: SyntaxError message: Unexpected token } at: undefined text: undefined 

error object stack: 
SyntaxError: Unexpected token } 
    at Object.parse (native) 
    at Object.<anonymous> (/home/james/devel/tests/node/test.js:4:10) 
    at Module._compile (module.js:449:26) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.runMain (module.js:492:10) 
    at process.startup.processNextTick.process._tickCallback (node.js:244:9) 

你可以随你挑:-)

干杯,

詹姆斯。