跳到主要内容

window.onerror

2024年02月27日
柏拉文
越努力,越幸运

一、认识


window.onerror 事件在冒泡阶段执行, 用于全局捕获错误

二、语法


window.onerror = function (message, source, lineno, colno, error) {
console.log("message: ", message);
console.log("source: ", source);
console.log("lineno: ", lineno);
console.log("colno: ", colno);
console.log("error: ", error);
return true;
};
  • message:错误信息(字符串)。可用于HTML onerror=""处理程序中的event

  • source:发生错误的脚本URL(字符串)

  • lineno:发生错误的行号(数字)

  • colno:发生错误的列号(数字)

  • error:**Error**对象

三、特点


3.1 可以捕获异步错误

3.2 不可以捕获静态资源加载错误

原因是资源类型错误没有冒泡,只能在捕获阶段捕获,而 window.onerror 是通过在冒泡阶段捕获错误,对静态资源加载类型异常无效,所以只能借助 window.addEventListener('error', callback, true) 的方式捕获。

3.3 事件监听器,只可以绑定一个,后一个会覆盖前一个

四、操作


4.1 阻止默认事件

没有返回值或者返回值为false的时候,异常信息会通过 console.error 的方式在控制台打印。无论返回 truefalse 或不返回,当有报错时都会阻止执行默认事件处理函数,即无法继续该报错代码的下一行逻辑。

因此, window.onerror 函数体可以通过返回return true 不让异常信息输出到控制台。