是否可以防止将特定的 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");
});

第一个 会工作,因为它会发出一个字符串警报,它会将警报后写入的消息记录到控制台。

secondthird 函数将不起作用,因为它们试图警告未定义的变量。他们后面的console.logs不会输出任何东西。

我的问题: 是否可以在保持以下属性的同时防止 second 函数的错误输出到控制台? :

编辑: 这里有一个 fiddle 可以玩 - https://jsfiddle.net/5m40LLmm/2/

超级编辑: 我不希望 second 函数中的逻辑执行真正改变。我 想要 抛出错误,并且 .click() 处理程序应该在到达 console.log 之前退出,就像现在一样.我只是想防止显示错误。我不想使用 trycatch 来规避错误或在使用 alert() 之前以某种方式检查变量是否存在。我知道并且 想要 错误发生,我只是想阻止它的显示。我希望这能让这更清楚。

使用try catch

$("#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 关键字检查是否定义了特定变量。

typeof documentation

$("#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;
    }
});