javascript - 捕获SyntaxError并运行备用函数

zan*_*ona 13 javascript quotes try-catch spidermonkey syntax-error

我正在尝试在javascript上构建一些东西,我可以输入一些像string,xml,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;");
Run Code Online (Sandbox Code Playgroud)

因此,前3个版本运行良好,因为它们是简单的javascript原生格式

但是当我尝试在javascript中使用它时

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

显然javascript将此解释为语法错误,因为它认为它的javascript抛出了一个SyntaxError.

所以我想做的是抓住这个错误并在发生这种情况时执行调整方法.

我已经尝试过try catch但它不起作用,因为它一旦尝试执行代码就会一直返回语法错误.

任何帮助将非常感激

干杯:)

附加信息:想象一下javascript将使用spidermonkey读取的外部文件,因此它是非浏览器的东西(我不能使用HttpRequest,DOM等...)..不确定这是否重要,但确实如此.:)

jes*_*vin 21

你确定一个Try ... Catch块不起作用吗?这个例子适用于firefox.

try {
  eval("hello I am a plain text without quotes");
} catch(err) {
  alert("error caught");
}
Run Code Online (Sandbox Code Playgroud)

  • 我也尝试捕获语法错误,但它仍然以"未捕获"的形式发送到控制台.语法错误是由中止的ajax请求而不是"eval"引起的,但它的概念相同,我认为它们``try..catch``会起作用,但事实并非如此. (2认同)