13

次のように、string、xml、javascript、および(引用符なしの非javascript文字列)のようなすべての入力を持つことができるjavascript上に何かを構築しようとしています:

//strings
    eval("'hello I am a string'"); /* note the following proper quote marks */

//xml
    eval(<p>Hello I am a XML doc</p>);

//javascript
    eval("var hello = 2+2;");

したがって、この最初の3つは、単純なjavascriptネイティブ形式であるため、うまく機能しています。

しかし、これをjavascript内で使用しようとすると

//plain-text without quotes
    eval("hello I am a plain text without quotes");
    //--SyntaxError: missing ; before statement:--//

明らかに、javascriptは、javascriptがSyntaxErrorをスローしていると見なすため、これを構文エラーとして解釈します。

そこで、このエラーをキャッチし、発生した場合の調整方法を実行したいと思います。

私はすでにtrycatchを試しましたが、コードを実行しようとするとすぐに構文エラーを返し続けるため、機能しません。

どんな助けでも大歓迎です

乾杯 :)

追加情報: JavaScriptがspidermonkeyを使用して読み取る外部ファイルを想像してみてください。これは、ブラウザー以外のものです(HttpRequest、DOMなどは使用できません)。これが重要かどうかはわかりませんが、あります。:)

4

1 に答える 1

21

Try ... Catchブロックが機能しないのは確かですか?この例は、Firefoxで私のために機能します。

try {
  eval("hello I am a plain text without quotes");
} catch(err) {
  alert("error caught");
}
于 2010-03-12T21:53:09.543 に答える