我已经看到了3种在JavaScript中抛出错误的方法:
throw 'message';
throw Error('message');
throw new Error('message');
他们之间有什么区别?
答案 0 :(得分:3)
throw
是expression,它会暂停该功能并生成exception。在{1}中直接跟随的是异常中传递的内容。可以把它想象成具有语法糖的函数,所以不要写throw
而是写throw('message')
。 throw 'message'
就像throw new Error('message')
一样,除了传递一个对象而不是一个字符串文字。
throw 'message'
和throw Error('message')
之间的 There is no difference:许多核心JavaScript对象允许在没有throw new Error('message')
构造函数的情况下创建新对象并发生new
成为其中之一。
话虽如此,您应始终使用Error
。 throw new Error('message')
对象包含堆栈跟踪和其他有用的调试信息,这些信息在使用字符串文字时会丢失。使用ES6类创建对象需要使用Error
和extending Error
via a class是保留堆栈跟踪的唯一方法。创建自定义错误类可以使错误处理更加统一。