throw
是一个表达式,它会停止函数的执行并生成一个异常。紧跟在throw
后面的内容将被传递到异常中。可以将其视为具有语法糖的函数,所以不需要写成throw('message')
,而是写成throw 'message'
。throw new Error('message')
与throw 'message'
相同,只是传递的是一个对象而不是字符串字面量。
throw Error('message')和throw new Error('message')
之间没有区别:许多核心JavaScript对象允许创建一个新对象而无需使用new
构造函数,Error
恰好是其中之一。
话虽如此,您应该始终使用throw new Error('message')
。 Error
对象包含堆栈跟踪和其他有用的调试信息,这些信息在使用字符串字面量时会丢失。使用ES6类创建对象需要使用new
,通过类扩展Error
是保留堆栈跟踪的唯一方法。创建自定义错误类可以使错误处理更加统一。
参见:详细说明的插图。