我见过在 JavaScript 中抛出错误的 3 种不同方式:
throw 'message';
throw Error('message');
throw new Error('message');
它们有什么区别?
最佳答案
throw
是一个 expression这会停止函数并生成一个 exception .直接跟在 throw
之后的任何内容都会在异常中传递。将其视为具有语法糖的函数,因此您无需编写 throw('message')
,而是编写 throw 'message'
。 throw new Error('message')
与 throw 'message'
类似,只是传递的是对象而不是字符串文字。
There is no difference在 throw Error('message')
和 throw new Error('message')
之间:许多核心 JavaScript 对象允许在没有 new
构造函数和 Error
恰好是其中之一。
也就是说,您应该始终使用throw new Error('message')
。 Error
对象包含堆栈跟踪和其他有用的调试信息,这些信息在您使用字符串文字时会丢失。使用 ES6 类创建对象需要使用 new
和 extending Error
via a class是保留堆栈跟踪的唯一方法。创建自定义错误类使错误处理更加统一。
关于javascript - `throw ' foo '`, ` throw Error ('foo' )`, ` throw new Error ('foo' )` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46295340/