Попробуйте работает, но Catch не работает в функции Javascript, как указано ниже - PullRequest
0 голосов
/ 11 июня 2019

В приведенной ниже функции Catch не работает.невозможно получить сообщение об ошибке.

function reverseString(s) {
  var ary = s.split("");
  ary.reverse();
  try {
    console.log(ary.join(""));
  } catch (err) {
    console.log(err);
  }
}
reverseString(1234);

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Просто введите var ary = s.split(""); как часть оператора try и используйте console.error в своем улове.

function reverseString(s) {
  try {
  var ary = s.split("");
  ary.reverse();
  console.log(ary.join(""));
  } catch (err) {
    console.error(err);
  }
}
reverseString(1234);
0 голосов
/ 11 июня 2019

Прежде чем приступить к вычислениям, убедитесь, что s - string.

Либо конвертируйте s в string:

function reverseString(s) {
  var ary = String(s).split("");
  ary.reverse();
  try {
    console.log(ary.join(""));
  } catch (err) {
    console.log(err);
  }
}
reverseString(1234);

Или выдать пользовательскую ошибку, если s не является строкой:

function reverseString(s) {
  if (typeof s !== "string") throw Error("s is not a string");
  // or
  // if (typeof s.split !== "function") throw Error("split is not supported");
  var ary = s.split("");
  ary.reverse();
  try {
    console.log(ary.join(""));
  } catch (err) {
    console.log(err);
  }
}
try {
  reverseString(1234);
} catch (err) {
  console.log("Error: " + (err && err.message));
}
try {
  reverseString("1234");
} catch (err) {
  console.log("Error: " + (err && err.message));
}
...