Может ли оператор catch отлавливать синтаксические ошибки в JavaScript? - PullRequest
1 голос
/ 22 апреля 2011

В блоге Kangax есть пример кода: §

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

Поскольку синтаксическая ошибка в строке 2 будет влиять на «синтаксис всего кода»,какой смысл в catch утверждении здесь?

Может ли catch перехватывать синтаксические ошибки в JavaScript?

Ответы [ 3 ]

2 голосов
/ 22 апреля 2011

Вы правы, синтаксический анализатор javascript выдаст ошибку, поэтому он никогда ее не перехватит.

http://jsbin.com/oluje5/edit

Возможно, он намеревался указать неверный синтаксис (оператор группировки может содержать только выражение, а не оператор), но оператор try / catch бесполезен.

Более того, комментарий //syntaxError внутри catch позволяет предположить, что catch что-то сделает.

1 голос
/ 22 апреля 2011

Синтаксические ошибки не будут перехвачены при попытке / отлове, так как вы не можете заключить переменные в такие скобки.

1 голос
/ 22 апреля 2011

Нет, это правильно. Использование try...catch не помогает при синтаксических ошибках.

Блок сценария вообще не будет работать, если из-за синтаксической ошибки он не будет проанализирован.

...