如果我使用:
throw new Error('You broke it');
我在chrome控制台中得到一个如下所示的输出:
它基本上看起来像是在做
console.error(new Error('You broke it'))
而不是
console.error('You broke it')
而如果我使用
throw 'You broke it';
我明白了:
看起来更像我期望的。
为什么Chrome会这样做,哪种方式正确?
我总是被告知使用第一种方法,但是控制台输出看起来比较粗糙,但是当我包裹try
catch
时,在第二种方法中它仅传递字符串而不是到实际的Error
对象。
包含Firefox供参考:
答案 0 :(得分:1)
你可以throw
你想要的任何对象 - 包括字符串。所以从这个意义上说,你的两个例子都没有错。但是,您通常希望抛出一个Error
对象,部分原因是它为您提供了有用的信息,例如err.stack
等。