小编典典

Promise.reject消息是否应该包装在Error中?

javascript

使用原生(ES6)Promise。我应该以错误拒绝:

Promise.reject(new Error('Something went wrong'));

还是我应该拒绝一个字符串:

Promise.reject('Something went wrong');

浏览器行为有什么区别?


阅读 496

收藏
2020-05-01

共1个答案

小编典典

是的,绝对可以。字符串不是错误,通常当您遇到错误时,这意味着出了点问题,这意味着您将真正享受良好的堆栈跟踪。没有错误-没有堆栈跟踪。

就像try / catch一样,如果您添加.catch到抛出拒绝中,则希望能够记录堆栈跟踪,而抛出字符串会为您带来麻烦。

我在移动设备上,因此答案很短,但我真的不能足够强调它的重要性。在大型(10K+LoC)应用程序中,拒绝中的堆栈痕迹确实使轻松的远程错误寻找与在办公室里漫长的夜晚之间产生了区别。

2020-05-01