2011-04-22 104 views
1

Kangax博客有一个代码示例:§捕获语句在JavaScript语法错误?

try { 
    (var x = 5); // grouping operator can only contain expression, not a statement (which `var` is) 
    } catch(err) { 
    // SyntaxError 
    } 

因为在第2行语法错误会影响“整个代码的语法”,什么是这里的catch语句的意义呢?

catch能够捕捉JavaScript中的语法错误吗?

回答

2

你说得对,javascript解析器会产生一个错误,所以它永远不会抓住它。

http://jsbin.com/oluje5/edit

或许他的意图是指出错误的语法(编组运营商只能包含表达,而不是语句),但try/catch语句是没用的。

此外,内部catch的注释//syntaxError让我们假设catch会做些什么。

+0

某些引擎可能会将语法错误视为运行时错误,反之亦然。例如,'if(false){new Object = 1; }虽然规范允许,但在Firefox中被视为语法错误。 – user123444555621 2011-04-22 18:25:35

+0

@ user123444555621,这在Chrome中也是一个语法错误(因此无法捕捉)。你确定规格允许吗?哪些规格? – Pacerier 2016-04-19 16:11:17

1

不,这是正确的。使用try...catch对语法错误没有帮助。

如果语法错误导致脚本块不能被解析,脚本块将不会运行。

1

语法错误不会被try/catch捕获,因为您不能将变量赋值放在括号中。