JavaScript 如何嵌套函数中附加新信息和重新抛出错误
在本文中,我们将看到如何通过一些理论解释来附加新的信息并重新抛出JavaScript中嵌套函数中的错误,并通过示例来理解它们。
本文分为两个部分,即在第一部分中,我们将了解如何在抛出错误时附加新信息,并在初始抛出错误后重新抛出错误。在第二部分中,我们将学习如何在嵌套函数中重新抛出带有附加信息的错误。
如何在抛出错误时附加新信息
为了在语句中附加新信息以及错误消息,我们将使用连接运算符(“+”),它可以将错误消息与附加信息连接在一起。
语法: 通过以下语法,我们可以在JavaScript中抛出错误时附加一些新信息:
throw new Error (error_message + "appended_information_in_string_format");
让我们通过下面的示例来理解上述语法。
示例1: 在这个示例中,我们将简单地创建一个try/catch块,在try块内部,我们将抛出一个带有附加信息的错误,这个错误将在catch块内捕获。
Javascript
<script>
try {
throw new Error("Please try again later!!.. "
+ "Site not working..!!");
} catch (error) {
console.log(error.message);
}
</script>
输出:
Please try again later!!.. Site not working..!!
如何在最初的错误抛出后再次抛出错误?
为了再次抛出错误,JavaScript不提供任何特殊的关键字。为了启动这个过程,我们必须在catch块内部抛出一个错误,这样在捕获了前一个错误后,它可以抛出一个后续错误,这个后续错误将在另一个catch块中被捕获。
语法:
try {
throw new error (error_message);
}
catch (error){
// do something with the error message itself
// Here, we will again throw an error in
// catch block itself
throw new Error (new_error_message)
}
示例2: 在这个示例中,我们将再次使用一个try/catch块,就像我们在前一节的示例中所使用的一样。在这里,在catch块中,我们将再次抛出一个错误,我们将在一个不同的catch块中捕获。此外,我们将把完整的try/catch块包裹在try块中(将初始的try/catch块嵌套在其中),并在此try块之后放置一个catch块。
Javascript
<script>
try {
try {
throw new Error("Error occurred...!!");
} catch (error) {
console.log(error.message);
throw new Error("Please try again later..!!");
}
} catch (error) {
console.log(error.message);
}
</script>
输出:
Error occurred...!!
Please try again later..!!
现在,我们将了解如何在嵌套函数中执行新信息的附加和重新抛出错误。在这里,我们将创建两个分别抛出两个不同错误的函数,并且这些错误将在其他函数中捕获。创建这两个函数后,我们需要创建第三个函数,并借助该函数捕获其他两个函数抛出的所有错误。此外,第三个函数将抛出自己的错误消息,然后附加信息,该信息将借助以上部分所示的语法进行初始化。 后来,在catch块中捕获这些错误后,我们将在catch块中抛出一个错误,该错误将在输出中显示两次。同时,我们将把在第三个函数内创建的try/catch块包装在另一个单独的try块中,然后将try块与跟随其后的catch块包装在一起。 以上步骤的目的是确保两个错误都是由两个不同的函数抛出的,可以很容易地在catch块中捕获,以及第三个函数抛出的带有附加信息的错误。然后,我们将匹配一个try/catch块,在完成上述所有任务之后,在try块中调用第三个函数,同时将其他函数一个接一个作为参数传递给第三个函数本身。最后,我们将一个接一个地捕获所有的错误,并将这两个错误在控制台上显示出来。 示例:
“` Javascript
<pre><code class="line-numbers">“`javascript
<script>
let firstErrorFunction = () => {
throw new Error(“Please try again later!!..”);
};
let secondErrorFunction = () => {
throw new Error(“Something went wrong!!..”);
};
let thirdErrorFunction = (func) => {
try {
try {
func();
} catch (error) {
console.log(error.message);
throw new Error(“Error 404!!…”
+ “File not found..!!”);
}
} catch (error) {
console.log(error.message);
}
};
try {
thirdErrorFunction(firstErrorFunction);
thirdErrorFunction(secondErrorFunction);
} catch (error) {
console.log(error.message);
}
</script>
输出:
Please try again later!!..
Error 404!!...File not found..!!
Something went wrong!!..
Error 404!!...File not found..!!