跳到主要内容

rejectionhandled

2023年03月14日
柏拉文
越努力,越幸运

一、认识


Promisereject并且错误信息已经被catch处理的时候,这个错误不会被window.onerror以及window.addEventListener("error",handler,true)捕获。但是有专门的rejectionhandled事件方法进行捕获处理

二、语法


window.addEventListener("rejectionhandled", event => {
console.log("Promise rejected; reason: " + event.reason);
}, false);

window.onrejectionhandled = ()=>{

}

Promise.reject(throw new Error("xxx")).catch(error=> { console.log(error) });

三、操作


3.1 阻止默认事件

许多环境 (例如 Node.js ) 默认情况下会向控制台打印未处理的 Promise rejections。你可以通过为 rejectionhandled 事件添加一个处理程序来避免这种情况的发生,该处理程序除了执行你希望执行的任何其他任务之外,还可以调用 preventDefault() 来取消该事件,从而阻止该事件冒泡并由运行时的日志代码处理。这种方法之所以有效,是因为 rejectionhandled 事件是可以取消的。

  • window.addEventListener: 通过 e.preventDefault() 取消默认事件

  • window.onrejectionhandled: 通过 return true 来取消默认事件