是否可以防止将特定的 JavaScript 错误写入控制台?
Is it possible to prevent a specific JavaScript error from being written to the console?
假设 - 假设我有一些 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");
});
第一个 会工作,因为它会发出一个字符串警报,它会将警报后写入的消息记录到控制台。
second 和 third 函数将不起作用,因为它们试图警告未定义的变量。他们后面的console.logs
不会输出任何东西。
我的问题: 是否可以在保持以下属性的同时防止 second 函数的错误输出到控制台? :
- first 函数应该按预期工作
- 第二个函数的后续
console.log
仍然应该不执行
- third 函数(以及任何其他函数)仍应输出它们的错误
编辑: 这里有一个 fiddle 可以玩 - https://jsfiddle.net/5m40LLmm/2/
超级编辑: 我不希望 second 函数中的逻辑执行真正改变。我 想要 抛出错误,并且 .click()
处理程序应该在到达 console.log 之前退出,就像现在一样.我只是想防止显示错误。我不想使用 try
和 catch
来规避错误或在使用 alert()
之前以某种方式检查变量是否存在。我知道并且 想要 错误发生,我只是想阻止它的显示。我希望这能让这更清楚。
$("#fix-this-error").click(function () {
try {
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
} catch() {}
});
或者在尝试使用之前检查variable is defined。
使用 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");
}
});
当您 运行 执行此操作时,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;
}
});
假设 - 假设我有一些 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");
});
第一个 会工作,因为它会发出一个字符串警报,它会将警报后写入的消息记录到控制台。
second 和 third 函数将不起作用,因为它们试图警告未定义的变量。他们后面的console.logs
不会输出任何东西。
我的问题: 是否可以在保持以下属性的同时防止 second 函数的错误输出到控制台? :
- first 函数应该按预期工作
- 第二个函数的后续
console.log
仍然应该不执行 - third 函数(以及任何其他函数)仍应输出它们的错误
编辑: 这里有一个 fiddle 可以玩 - https://jsfiddle.net/5m40LLmm/2/
超级编辑: 我不希望 second 函数中的逻辑执行真正改变。我 想要 抛出错误,并且 .click()
处理程序应该在到达 console.log 之前退出,就像现在一样.我只是想防止显示错误。我不想使用 try
和 catch
来规避错误或在使用 alert()
之前以某种方式检查变量是否存在。我知道并且 想要 错误发生,我只是想阻止它的显示。我希望这能让这更清楚。
$("#fix-this-error").click(function () {
try {
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
} catch() {}
});
或者在尝试使用之前检查variable is defined。
使用 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");
}
});
当您 运行 执行此操作时,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;
}
});