2016-05-10 10 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); 
    } 
} 

このコードは、メッセージを解析できないときはいつでもエラーを記録するために使用されます。 ロギングとは別に、解析できない場合は構文エラーがスローされます。どうしてこんなことに?どのように処理することができますか?JSON.parseはすでにtry/catchブロック内にあり、構文エラーをスローします。

何かアドバイスは、私はそれはあなたがエラーを投げているパラメータとして渡している方法である疑いがある

+2

スローされるエラーメッセージは何ですか?そして、それらの線のうちのどれが投げられるのですか? –

+0

functionキーワードを忘れてしまったようです。 –

+0

functionキーワードはいくつかのケースでは必須ではありません –

答えて

2

素晴らしいことです。 jsonCallBackが独自のエラー処理を実行していることを確認してください。あなたが受け取ったエラーは何ですか?

エラーは、キャッチブロック内を含むどこにでもスローされます。 catchブロックにエラーがスローされた場合、catchされるか、スタックが使い果たされ、キャッチされない例外になるまで、スタックをpercolateします。上記述べたように書き換え

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

+1

コメントのために使っていた構造がエラーを把握するために私を助けています。ありがとう、私はJavaScriptに新しいです。このコールバックを期待している関数でエラーが発生しました。 –

0

ビットは、その後、解析エラーがjsonCallBack(err)

に発信者に転送されるように、エラーをスロー発信者であってもよいです。

問題を解決するには、jsonCallBack(err)という呼び出しにコメントする必要はありませんが、呼び出し元のタイプに応じてエラーハンドラをバインドして、何をすべきかを決定します。

+0

詳細な対応をありがとうございます。それは助けになった。 –

関連する問題