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.