JavaScript 在基本的catch块中处理未处理的promise拒绝

JavaScript 在基本的catch块中处理未处理的promise拒绝

在本文中,我们将尝试分析promise拒绝在基本catch块本身中未被处理的情况,以及后续执行时将接收到的输出,并且我们还将通过一个示例来分析其解决方案。

让我们首先分析在JavaScript中声明promise和try-catch块的语法,以在错误捕获和处理过程中使用。

语法: 我们将使用以下语法来声明JavaScript中的promise(使用resolve()方法或reject()方法):

new Promise ((resolve, reject) => {
    // do something with either resolve() method....
    // or with reject() method...
})

下面是我们在JavaScript中用于声明try-catch块以进行错误捕获和处理的语法:

try {
    // do something...
    // error must be caught in this block itself...
}

catch(error_variable) {
    // do something with this error_variable...
}

在分析以上所有的语法之后, 让我们通过一个示例来分析我们的问题陈述, 这个示例也会涵盖所有上述的语法(从理论上以及使用 JavaScript 进行编码)如下所示:

示例 1:

  • 在这个示例中, 我们将首先创建一个方法, 它会返回一个 rejected 状态的 promise(通过 reject() 方法), 该 promise 需要稍后进行缓存。
  • 然后我们将再次使用 async 关键字创建一个方法, 在该方法内部, 我们将使用简单的 try-catch 块来存储和捕获第一个函数抛出的错误。
  • 在 try 块内部, 我们将创建一个变量, 在变量内部, 我们将使用 await 关键字来存储错误, 然后我们将使用 console.log() 方法来输出结果。
  • 在 catch 块内部, 我们实际上不是处理错误, 而是使用 throw 关键字抛出错误, 然后我们会在输出中得到一个警告错误(如输出部分所示)。

JavaScript

<script> 
    let errorThrownFunction = () => { 
        return new Promise((resolve, reject) => { 
            reject("Connection Failed!!.."); 
        }); 
    }; 
  
    let errorHandlerMethod = async () => { 
        try { 
            let result = await errorThrownFunction(); 
            console.log(result); 
        } catch (error) { 
            throw new Error(error); 
        } 
    }; 
  
    errorHandlerMethod(); 
</script> 

输出:

JavaScript 在基本的catch块中处理未处理的promise拒绝

现在我们已经很好地可视化了输出,我们知道在捕获块本身中实现了一些错误,并且我们必须对其进行修正。其修正在下面的示例中已经实施。

示例2:

  • 在这个示例中,我们将尝试实现两个与前面的示例中实现的相同名称和签名的方法。
  • 唯一的变化是在捕获块的 throw 语句本身中的变化,因为通过抛出一个错误,我们实际上避免了错误的处理过程,我们直接抛出它而不处理它。
  • 在捕获块中,我们将使用 console.log() 方法来处理前一个方法中捕获的错误,稍后我们将看到错误处理消息而不是警告错误。

JavaScript

<script> 
    let errorThrownFunction = () => { 
        return new Promise((resolve, reject) => { 
            reject("Connection Failed!!.."); 
        }); 
    }; 
  
    let errorHandlerMethod = async () => { 
        try { 
            let result = await errorThrownFunction(); 
            console.log(result); 
        } catch (error) { 
            console.log(error); 
        } 
    }; 
  
    errorHandlerMethod(); 
</script> 

输出结果:

Connection Failed!!..

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程