Ответ 1
Ты просто не можешь. Спектр говорит, что всегда должен быть идентификатор внутри parens после catch
.
Мне было интересно, если есть способ не указывать аргумент при выполнении JS try/catch. Каждый раз, когда я пытаюсь это сделать, try/catch не работает.
Рабочая версия:
try{
//Breaking code
} catch(e){
//Nothing happens here
}
Что я имею в виду ("нет"):
try{
//Breaking code
} catch(){
//Nothing happens here
}
Ты просто не можешь. Спектр говорит, что всегда должен быть идентификатор внутри parens после catch
.
Спецификация дает грамматику для блока catch
:
Поймать:
catch (
Identifier)
Block
И далее заявляет, что:
Когда предложение catch получает исключение, его Идентификатор привязан к этому исключению
Таким образом, синтаксическая ошибка пропускает идентификатор из блока catch
.
Просто опустите parenthese, вот так:
try {
// Code...
} catch {
// Code...
}
Согласовано, это обязательно, чтобы вы могли полностью справиться с ошибкой - даже если вы знаете, какова будет ошибка. По правде говоря, просто прод в имени переменной и не используйте ее в своей рутинной подпрограмме :)
В Node.js эта функция называется привязкой необязательного захвата и поддерживается начиная с версии 10.3 Node.js, см. Https://node.green.
В Typescript это разрешено начиная с версии 2.5.
В настоящее время предложение находится на этапе 4, что означает, что его реализация завершена и он гарантированно будет включен в следующую версию стандарта ECMAScript.
Так что теперь это совершенно законный синтаксис в соответствии со стандартом, если вы используете Node.js или переносите код браузера с помощью Babel:
try {
} catch {
// No need for the '(error)' after 'catch'!
}