【问题标题】:Event handling in JavaScript: how should I handle errors from DOM events?JavaScript 中的事件处理:我应该如何处理来自 DOM 事件的错误?
【发布时间】:2021-11-07 18:56:50
【问题描述】:

我有以下代码:

const button = document.querySelector("button");

button.addEventListener("click", function() {
  throw Error("Can't touch this button!");
});

这里我们只要点击按钮就抛出异常。我们如何捕捉它?很明显这种模式行不通

const button = document.querySelector("button");

try {
  button.addEventListener("click", function() {
    throw Error("Can't touch this button!");
  });
} catch (error) {
  console.error(error.message);
}

我想知道在浏览器环境中处理此类错误的常用方法是什么?

【问题讨论】:

  • 听起来像XY problem。为什么在事件监听器中抛出错误?你希望通过这个实现什么目标?
  • 禁用按钮这样你就不能点击它会更有意义。
  • @Sebastian Simon 抱歉,我只是想让问题尽可能简单。当然我们不会故意抛出错误,但有时会出现未处理的错误。这个想法是回调,即这里的侦听器可以抛出我们可能不知道的异常。

标签: javascript dom dom-events


【解决方案1】:

在浏览器上下文中,您可以在window 上注册error 事件的处理程序:

window.onerror = function (e) {
    console.log("custom error handler kicked in");
    return true; // Prevent default error handler
};

重要的是这段代码本身不会触发错误,否则处理程序将被再次调用,一次又一次......

【讨论】:

    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2012-04-24
    相关资源
    最近更新 更多