Try / Catch не будет ловить Объявленная постоянная ошибка - PullRequest
0 голосов
/ 01 октября 2018

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

Один из этих курсов был посвящен переменным EcmaScript6 и переменным let и выражению Try and Catch.Поэтому, как любопытный младший разработчик, я попробовал это сам, объявив функцию-стрелку в константе и попытавшись изменить константу:

const userValidation = (userValid) => userValid == true ? "You may enter" : "You may not enter, sorry.";

try {
  var userValidation = function(userID) {
    //Execute some code which ofcourse will never execute
  }
}
catch(err) {
  console.log("Woops, something went wrong.");
}

console.log(userValidation(false));

Я ожидал, что появилось сообщение об ошибке: "Woops, что-то пошло не так«.потому что я уже объявил константу "UserValidation".Но это было не то, что происходило, вместо этого консоль просто выдавала ошибку и умирала:

Console error

Что я делаю не так?

1 Ответ

0 голосов
/ 01 октября 2018

try, операторы catch используются для перехвата ошибок времени выполнения, но этот SyntaxError обнаруживается во время синтаксического анализа Javascript перед его выполнением.Это потому, что вы не переназначаете переменную (const) здесь, а переопределяете ее с другим идентификатором (var).Если бы код был

const userValidation = (userValid) => userValid == true ? "You may enter" : "You may not enter, sorry.";

try {
  userValidation = function(userID) {
    //Execute some code which ofcourse will never execute
  }
}
catch(err) {
  console.log("Woops, something went wrong.");
}

без идентификатора var, то это стало бы ошибкой во время выполнения.Код будет пытаться переназначить переменную const, и ваш оператор catch будет выполнен.

...