Javascript 全局错误处理程序无法捕获未处理的Promise拒绝

Javascript 全局错误处理程序无法捕获未处理的Promise拒绝

全局错误: 对于一组常微分方程的初始值问题以及单步程序产生的全局或真实误差都进行了研究。一些基于渐近全局误差展开的技术用于近似这个全局错误。

未处理的Promise拒绝: 当JavaScript的Promise没有拒绝处理程序时,未处理拒绝事件被分派到脚本的全局范围;通常,这是窗口,但也可能是一个Worker。这有助于调试并为意外情况提供后备错误处理。

全局错误处理程序: 每次应用程序中抛出错误时,都会调用此函数。该方法可以通过参数对错误进行进一步处理。在这个示例中,打开对话框以显示错误消息,并且还在浏览器控制台记录错误。

未处理的Promise: 当JavaScript的Promise没有拒绝处理程序时,未处理拒绝事件被分派到脚本的全局范围;通常,这是窗口,但也可能是一个Worker。这有助于调试并为意外情况提供后备错误处理。

当操作无法完成时,通常(但不总是)当值与预期类型不符时,TypeError对象记录错误。当传递给函数的操作数或参数与该运算符或函数期望的类型不兼容时,可能会引发TypeError。

回调使得可能嵌套大量的代码,并且它们在处理错误时也不是很好。回调的标准错误处理实践是确保任何潜在的错误都存储在回调函数的第一个参数中。

然后,为了确保正确处理它,您必须检查该参数是否存在。这是基于promises的,使用catch函数来处理错误。任何上游错误都由catch方法处理,这是有保证的。

为了在程序运行时捕获每个拒绝的promise实例,本指南将向您展示如何进一步添加一个全局promise拒绝处理程序。

示例1: 2016年,浏览器引入了将事件处理程序应用于全局可访问的新属性的能力。每次未处理拒绝时,都会触发未处理拒绝事件。您可以在下面的代码中看到一个未处理的拒绝的promise的示例。

Javascript

const P_Example = new Promise((resolve, reject) => { 
    reject('Ouch'); 
}); 
  
P_Example.then(() => { 
    console.log(`Its GFG Portal and I'm Amarjeet`); 
}); 
  
// An Unhandled Promise Rejection Error occur

输出:

Ouch

上面的简单代码示例创建的Promise将始终被拒绝。因为没有使用catch技术来处理可能的错误,当尝试履行Promise时会发生错误。该应用程序由于此原因而遇到了未捕获的错误!

挽救方法: 使用onunhandledrejection事件处理程序!您可以通过使用onunhandledrejection事件处理程序提供一个全局失效保护来捕获所有未处理的拒绝的Promise。

示例2: 下面的更新代码现在包含了我们的全局Promise拒绝处理程序。

Javascript

// Below function will handle unhandled promise rejections 
const globalPromiseRejectionHandler = (event) => { 
    console.log('Unhandled promise rejection reason: ', event.reason); 
} 
  
// we will assign handler to the corresponding global, window property 
window.onunhandledrejection = globalPromiseRejectionHandler; 
  
const myPromise = new Promise((resolve, reject) => { 
    reject('Something Wrong'); 
}); 
  
myPromise.then(() => { 
    console.log(`It's GFG Portal`); 
});

输出:

Something Wrong

如果提供第二个参数,.then 也会处理所有类型的 promise 中的错误,无论是 reject() 调用还是在处理程序中报告的错误(即错误处理器)。

.catch 应该放在我们要处理错误和我们知道如何管理错误的地方。处理程序应该检查错误(自定义错误类有帮助),并重新抛出任何未知的错误。

如果没有办法纠正一个错误,完全不使用 .catch 也是可以接受的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程