2016-05-10 3 views
-2
parseJsonMsg(msg, jsonCallBack) { 
    try { 
    let content = JSON.parse(msg.content); 
    jsonCallBack(null, content); 
    } catch (err) { 
    console.log('[MSG processing ERROR]: ', err.message); 
    jsonCallBack(err); 
    } 
} 

Dieser Code wird verwendet, um den Fehler zu protokollieren, wenn eine Nachricht nicht analysiert werden kann. Abgesehen von der Protokollierung wird ein Syntaxfehler ausgegeben, wenn das Parsen nicht möglich ist. Warum ist das so? Wie kann damit umgegangen werden?JSON.parse, bereits im try/catch-Block, löst immer noch Syntaxfehler aus

würde Ratschläge

+2

Was ist die Fehlermeldung, die ausgelöst wird? Und bei welcher dieser Zeilen wird es geworfen? –

+0

Es scheint, als hätten Sie das Funktionsschlüsselwort vergessen. –

+0

Funktion Schlüsselwort ist nicht in mehreren Fällen erforderlich –

Antwort

2

groß sein, ich vermute, es ist die Methode Sie als Parameter in sind, der den Fehler zu werfen. Stellen Sie sicher, dass jsonCallBack eine eigene Fehlerbehandlung durchführt. Was ist der Fehler, den Sie erhalten?

Fehler können überall ausgegeben werden, auch in Catch-Blöcken. Wenn ein Fehler in einem catch-Block ausgelöst wird, wird der Stack durchforstet, bis er entweder abgefangen wird oder der Stack erschöpft ist und zu einer nicht abgefangenen Ausnahme wird.

+1

Ihr Kommentar hat mir geholfen, den Fehler herauszufinden. Danke, ich bin neu in Javascript. Der Fehler war mit der Funktion, die diesen Rückruf erwartet. –

0

Bit Rewrite

parseJsonMsg(msg, jsonCallBack) { 
    var err; 
    var content; 
    try { 
    content = JSON.parse(msg.content); 
    } catch (ex) { 
    console.log('[MSG processing ERROR]: ', err.message); 
    err = ex; 
    } 
    jsonCallBack(err, content); 
} 

dann, wie oben gesagt, wird der Parsing-Fehler an den Aufrufer weitergeleitet in jsonCallBack(err)

So kann es der Anrufer sein, die den Fehler auslöst.

Um Ihr Problem zu beheben, sollten Sie diesen Aufruf jsonCallBack(err) nicht kommentieren, aber abhängig vom Typ des Aufrufers, binden Sie seinen Error-Handler und entscheiden dann, was zu tun ist.

+0

Danke für die ausführliche Antwort. Es half. –

Verwandte Themen