2013-01-11 12 views
6

Mam prosty przykład:Jak wydrukować wiadomość w obchodzeniu się z podejściem błędu, złapać

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

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

wynik:

[SyntaxError: Nieoczekiwany token}]

Jak wydrukować wszystkie błąd informacje?

Oczekiwany wynik:

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

W obiekcie błędu nie ma informacji o tym, który znak spowodował błąd, jeśli tego właśnie szukasz. – Cerbrus

Odpowiedz

6

Pomoże:

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 nie jest dokładnie to, co chcesz, ale to pomoże.

2

To pokaże różne sposoby, w którym można uzyskać informacje o dostępnych:

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); 
} 

wyjście zostaje:

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) 

Możesz wybierać :-)

Pozdrowienia,

James.

Powiązane problemy