是否可以防止将特定的JavaScript错误写入控制台?

时间:2015-07-15 16:58:31

标签: javascript jquery error-handling console.log web-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");
});

第一个一个会在警告字符串时起作用,它会在警报后记录消息。

第二第三个函数无效,因为它们正在尝试警告未定义的变量。他们随后的console.logs将不会输出任何内容。

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

  • 第一个功能应按预期工作
  • 第二个功能的后续console.log仍然执行
  • 第三个功能(以及任何其他功能)仍应输出错误

编辑:这是一个小提琴 - https://jsfiddle.net/5m40LLmm/2/

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

2 个答案:

答案 0 :(得分:1)

运行此命令时,实际上从未调用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;
    }
});

答案 1 :(得分:0)

使用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");
    }
});