2011-05-11 30 views
5

MDN states:JavaScriptエンジンがコードを解析する際に、言語の構文に準拠していないトークンまたはトークンのために遭遇したとき構文エラーはJavaScriptに捕捉される可能性がありますか?

にSyntaxErrorがスローされます。

しかし、構文エラーがある場合、どのようにプログラムを実行することができますか?

JavaScriptシンタックスエラーはどのように捕捉できますか?

+0

関連:http://stackoverflow.com/questions/12219154/ignore-javascript-errors-in-a-page-and-continue-executing-the-script –

答えて

5

それはのtry-catchでキャッチすることができ、実行時エラーではなく、構文エラーです(もしあなたがevalあなたのコードあなたはevaledコードの構文エラーを処理することができますが、それはただ奇妙です)。

私はあなたがこれらを読んでお勧めします:

+1

リンクは「コンテンツ移動」ページを指します。 .. –

+0

+1は、excistanceへのevalingコードで、可能な構文エラーに関する例外をキャッチしています。 – Martijn

+0

これは壊れたリンクです – Pacerier

0

あなたはちょうどあなたが構文的に有効なJavaScriptを書いていることを保証しようとしている場合、私はお勧めできませんJSLintまたはJSHint十分強く。

  1. Learn itUse it.
  2. もっと良いJavaScriptプログラマになるには
  3. ???
  4. 利益!
+1

9gagger、ありますか? – Santosh

4

あなたはwindow.onerrorを使用して一部のブラウザでそれらを扱うかもしれませんがあなたはプログラマ、生成され、実行時例外をキャッチすることができますが、JavaScriptの構文エラーをキャッチすることはできません、

これは私が大好きな本JavaScript- The Complete Reference by Thomas-Powellから取られています。この本のコード例を参照することができます。

+0

コード例がありますか?どのブラウザですか? – Pacerier

4

try-catchブロックを使用して、構文エラーが処理されている間に構文エラーを処理することはできません。

window.onerrorを使用するとエラーが発生していることがわかります。 onerror関数は、エラーが存在する可能性のあるタグではなく、別のスクリプトタグで定義されていることを確認する必要があります。

例:

<script> 
    window.onerror = function (e) { 
    console.log('Error: ', e); 
    }; 
    console.log('a''); 
</script> 

これは動作します:

<script> 
    window.onerror = function (e) { 
    console.log('Error: ', e); 
    }; 
</script> 
<script> 
    console.log('a''); 
</script> 

jsfiddle demo

エラーがスローされたときにスクリプトが実行を開始することはまだあるので

これは、動作しません

0

JSの世界では、SyntaxErrorは実行時例外である可能性があります。たとえば、JSON形式ではないJSON応答を解析しようとすると、これが発生する可能性があります。サーバーはたくさんの種類の応答を返すことができるので、あなたの要求にJSONが必要なHTML本文応答を送信すると、JSにはSyntaxErrorがスローされます。このような場合、次のようなエラーメッセージが表示されます。SyntaxError: JSON Parse error: Unrecognized token '<'

しかし、他の実行時の構文エラーもあります。 Mozillaには、ここにいくつかのリストがあります:SyntaxErrors for JSON parsing

あなたのコードでこれをキャッチしたいかもしれません。

try { 
    JSON.parse('<html></html>'); 
} catch (e) { 
    console.log("I catch & handle all errors the same way."); 
} 

ORあなたは、具体的にSyntaxErrorを探すことができます:

try { 
    JSON.parse('<html></html>'); 
} catch (e) { 
    if (e instanceof SyntaxError) { 
    console.log("I caught a pesky SyntaxError! I'll handle it specifically here."); 
    } else { 
    console.log("I caught an error, but it wasn't a SyntaxError. I handle all non-SyntaxErrors here."); 
    } 
} 

Mozillaはinfo on JS errors and handling themさらに多くのを持っているあなたは、このような一般的なtry/catchブロックで行うことができます。

関連する問題