JavaScript 如果发生错误是否可以重试try-catch块

JavaScript 如果发生错误是否可以重试try-catch块

在本文中,我们将尝试通过理论和编码示例来理解如何在JavaScript中重试try/catch块,如果抛出任何特定的错误。

让我们首先看一下下面的示例,这将帮助我们理解如果不重试try/catch块,如果某个结果条件不满足,将会发生什么。

示例1:

  • 在此示例中,我们将创建一个函数,在该函数内部创建一个变量,用于存储随机生成的数字。
  • 使用JavaScript提供的 Math 类中的一个方法 Math.random() 来计算生成的随机数。
  • 在存储随机数后,我们将将该数字乘以10,并使用另一种名为 Math.floor() 的方法获取所有计算过程的地板值。
  • 在完成所有这些操作后,我们将检查该数字是否与我们传入的数字匹配,根据情况显示结果或抛出错误,并稍后捕获它。

Javascript

<script>
    let checkNumber = (num) => {
        let random_number = Math.floor(Math.random() * 10);
 
        if (random_number === num) {
            return `Yes number {random_number} 
                matches with the passed in number{num}`;
        } else {
            throw new Error("Number doesn't matches");
        }
    };
 
    try {
        console.log(checkNumber(6));
    } catch (error) {
        console.log(error.message);
    }
</script>

输出:

Number doesn't matches

正如我们在输出和代码片段中看到的那样,大多数时间都会抛出错误语句,因此大多数时间我们传入的数字与随机生成的数字不匹配。让我们来看看下面说明的示例,它将创建一个重试的try/catch块,直到传入的数字与函数内部随机生成的数字匹配为止。

示例2:

  • 在这个示例中,我们将创建另一个函数,并考虑到之前示例中创建的函数。
  • 在其中,一个函数在循环中将创建一个try/catch块,在try块内部将返回我们的第一个函数,以便如果数字不匹配,我们可以在catch块中捕获第一个函数抛出的错误。
  • 输出肯定是一个正数,表明“是的,数字与传入的数字匹配”,但是在这里我们的调用堆栈大小会增加,因为多次错误将被缓存为除一次以外的数字始终被拒绝。

Javascript

<script>
    let checkNumber = (num) => {
        let random_number = Math.floor(Math.random() * 10);
 
        if (random_number === num) {
            return `Yes number {random_number} matches 
                with the passed in number{num}`;
        } else {
            throw new Error("Number doesn't matches");
        }
    };
 
    let checkAgainNumber = () => {
        while (true) {
            try {
                return checkNumber(7);
            } catch (error) { }
        }
    };
 
    console.log(checkAgainNumber());
</script>

输出结果:

Yes number 7 matches with the passed in number 7

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程