Можно ли предотвратить запись конкретной ошибки JavaScript в консоль?
Гипотетически - скажем, у меня есть некоторый JavaScript для обработки нажатий трех разных кнопок:
$("#working").click(function () {
alert("Seth Rollins is the greatest champion of all time.");
console.log("WWE World Heavyweight Champion");
});
$("#fix-this-error").click(function () {
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
});
$("#should-error").click(function () {
alert(oipewavqn2389tvb3t8ahwleuhtvab3iwuthabvlewiuweaqhaoiuhva98r3b2);
console.log("This won't show either");
});
Первый из них будет работать, когда он предупреждает строку, и он будет записывать в консоль сообщение, написанное после предупреждения.
Вторая и третья функции не будут работать, потому что они пытаются предупредить переменные, которые не определены. Их последующее console.logs
не будет ничего выводить.
Мой вопрос: возможно ли предотвратить вывод ошибки из второй функции на консоль при сохранении следующих свойств?:
- Первая функция должна работать как задумано
- Вторая функция последующая
console.log
все еще не должен казнить - Третья функция (и любые другие функции) должны по-прежнему выводить свои ошибки
Изменить: Вот скрипка, чтобы поиграть в - https://jsfiddle.net/5m40LLmm/2/
SUPER EDIT: я не хочу, чтобы исполнение логики во второй функции действительно менялось. Я хочу, чтобы ошибка была сброшена, а .click()
обработчик должен завершиться до того, как он достигнет console.log, как это происходит сейчас. Я просто хочу, чтобы ошибка не отображалась. Я не хочу использовать try
а также catch
чтобы обойти ошибку или каким-то образом проверить, существует ли переменная, прежде чем я использую alert()
, Я знаю и хочу, чтобы ошибка произошла, я просто хочу предотвратить ее отображение. Я надеюсь, что это делает это более ясным.
3 ответа
Когда вы запускаете это, функция console.log никогда не вызывается. Функция оповещения дает сбой, регистрирует, что это не удалось, и функция прослушивания щелчка завершается. console.log()
никогда не достигается Это означает, что вам просто нужно, чтобы предупреждение не показывало ошибку. Здесь полезны операторы try catch.
$("#fix-this-error").click(function () {
try {
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
} catch (e) {
// Code jumps here when `alert()` fails.
// `e` stores information about the error
// If you don't want to put everything in the try/catch,
// you can stop the function from continuing execution with
return;
}
});
Используйте попробовать поймать
$("#fix-this-error").click(function () {
try {
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
} catch() {}
});
или проверьте, определена ли переменная, прежде чем пытаться ее использовать.
Использовать typeof
ключевое слово, чтобы проверить, определена ли конкретная переменная или нет.
$("#fix-this-error").click(function () {
if (typeof this_should_not_show_up_in_the_console !== "undefined")
{
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
}
});