2011-04-22 164 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捕獲,因爲您不能將變量賦值放在括號中。