【发布时间】:2018-02-27 22:30:42
【问题描述】:
我见过 3 种在 JavaScript 中引发错误的不同方式:
throw 'message';
throw Error('message');
throw new Error('message');
它们有什么区别?
【问题讨论】:
-
@RobG 我回答了我自己的问题,因此其他人不必阅读所有其他答案:)
标签: javascript error-handling throw
我见过 3 种在 JavaScript 中引发错误的不同方式:
throw 'message';
throw Error('message');
throw new Error('message');
它们有什么区别?
【问题讨论】:
标签: javascript error-handling throw
throw 是一个expression,它会停止函数并生成一个exception。任何直接跟在throw 之后的东西都会在异常中传递。把它想象成一个带有语法糖的函数,所以不要写throw('message'),而是写throw 'message'。 throw new Error('message') 就像 throw 'message' 一样,只是传递的是对象而不是字符串。
throw Error('message') 和 throw new Error('message') 之间的There is no difference:许多核心 JavaScript 对象允许在没有 new 构造函数的情况下创建新对象,而 Error 恰好是其中之一。
话虽如此,您应该始终使用throw new Error('message')。 Error 对象包含堆栈跟踪和其他有用的调试信息,这些信息在您使用字符串文字时会丢失。使用 ES6 类创建对象需要使用new,而extending Error via a class 是保留堆栈跟踪的唯一方法。创建自定义错误类使错误处理更加统一。
【讨论】: