Могу ли я использовать try/catch в JavaScript без указания аргумента/идентификатора catch?

Мне было интересно, если есть способ не указывать аргумент при выполнении JS try/catch. Каждый раз, когда я пытаюсь это сделать, try/catch не работает.

Рабочая версия:

try{
  //Breaking code
} catch(e){
  //Nothing happens here
}

Что я имею в виду ("нет"):

try{
  //Breaking code
} catch(){
  //Nothing happens here
}

Ответы

Ответ 1

Ты просто не можешь. Спектр говорит, что всегда должен быть идентификатор внутри parens после catch.

Ответ 2

Спецификация дает грамматику для блока catch:

Поймать:

catch ( Identifier ) Block

И далее заявляет, что:

Когда предложение catch получает исключение, его Идентификатор привязан к этому исключению

Таким образом, синтаксическая ошибка пропускает идентификатор из блока catch.

Ответ 3

Просто опустите parenthese, вот так:

try {
    // Code...
} catch {
    // Code...
}

Ответ 4

Согласовано, это обязательно, чтобы вы могли полностью справиться с ошибкой - даже если вы знаете, какова будет ошибка. По правде говоря, просто прод в имени переменной и не используйте ее в своей рутинной подпрограмме :)

Ответ 5

Дополнительная привязка к уловам в 2019 году

Node.js

В Node.js эта функция называется привязкой необязательного захвата и поддерживается начиная с версии 10.3 Node.js, см. Https://node.green.

Машинопись

В Typescript это разрешено начиная с версии 2.5.

Поддержка браузера

  • Хром: с 68
  • Firefox: с 58
  • Edge, IE, Safari: пока нет поддержки

стандарт

В настоящее время предложение находится на этапе 4, что означает, что его реализация завершена и он гарантированно будет включен в следующую версию стандарта ECMAScript.

Так что теперь это совершенно законный синтаксис в соответствии со стандартом, если вы используете Node.js или переносите код браузера с помощью Babel:

try {

} catch {
  // No need for the '(error)' after 'catch'!
}