JavaScript中的正确抛出语法

时间:2014-08-19 22:55:14

标签: javascript

如果我使用:

throw new Error('You broke it');

我在chrome控制台中得到一个如下所示的输出: throw new Error()

它基本上看起来像是在做

console.error(new Error('You broke it')) 

而不是

console.error('You broke it')

而如果我使用

throw 'You broke it';

我明白了: throw String

看起来更像我期望的。

为什么Chrome会这样做,哪种方式正确?

我总是被告知使用第一种方法,但是控制台输出看起来比较粗糙,但是当我包裹try catch时,在第二种方法中它仅传递字符串而不是到实际的Error对象。

包含Firefox供参考: enter image description here

1 个答案:

答案 0 :(得分:1)

你可以throw你想要的任何对象 - 包括字符串。所以从这个意义上说,你的两个例子都没有错。但是,您通常希望抛出一个Error对象,部分原因是它为您提供了有用的信息,例如err.stack等。