📌  相关文章
📜  throw Error('msg') 和 throw new Error('msg') 的区别

📅  最后修改于: 2022-05-13 01:56:16.904000             🧑  作者: Mango

throw Error('msg') 和 throw new Error('msg') 的区别

throw 语句允许您创建异常或自定义错误。异常可以是 Javascript字符串、数字、布尔值或对象。因此,如果您将此语句与 try...catch 语句一起使用。它允许您控制程序的流程并生成准确的错误消息。例如:抛出“太小”(抛出文本)、抛出 500(抛出数字)等。

首先, throw Error() 和 throw new Error() 在功能上是等价的。

句法:

throw Error("Enter your error message here");

错误对象:生成一个包含错误信息的对象,并将其作为参数传递给 catch。错误对象具有三个属性:名称、消息和堆栈。

Error()构造函数用于创建一个新的错误对象。

例子:为了更好的理解,我们举个例子:

Javascript
// throw Error()
try {
    throw Error("msg");
} catch (e) {
    console.log("for Error()");
    console.log(e);
}


Javascript
// throw new Error()
try {
    throw new Error("msg");
} catch (e) {
    console.log("for new Error()");
    console.log(e);
}


输出:

上述代码的输出(错误)

在上面的代码中,我添加了一个带有 throw Error() 的 try...catch 语句。此代码将在 try 块中引发“msg”错误,该块将由 catch 语句执行。

新的错误对象:它捕获发生错误的地方的几个属性。它公开了一个带有两个参数名称和消息的错误事件。它还终止进一步的执行。

示例:为了更好地理解,我们将举一个例子

Javascript

// throw new Error()
try {
    throw new Error("msg");
} catch (e) {
    console.log("for new Error()");
    console.log(e);
}

输出 :

上述代码的输出(新错误)

在上面的代码中,我添加了一个带有 throw new Error() 的 try...catch 语句。此代码将在 try 块中引发“msg”错误,该块将由 catch 语句执行。

正如您在两个控制台的图像中看到的那样,抛出一个错误('msg')和抛出一个新的错误('msg')给出相同的结果。

注意: Error() 和 new Error() 作为结果返回一个对象。

throw Error() 和 throw new Error() 的区别:

throw Error()

throw new Error()

 Error(…) is less reliable and consistent.new Error(…) is more reliable and consistent.
the Error object contains a stack trace and other useful debugging information which is lost when you use a string literal. Creating objects using ES6 classes requires the use of new and extending Error via a class is the only way to preserve stack traces.