正如我所看到的,通常会看到这一行:
if (err) return done(err);
但据我理解,我可以这样做:
if (err) throw err;
看起来很漂亮,效果很好。那有什么区别?
是的,我知道承诺,我喜欢他们,但我仍然想知道这个问题的答案。
答案 0 :(得分:2)
你可以做到
if (err) throw err;
如果错误是致命的,并且您希望程序崩溃,因为无法捕获此类错误。如果您编写库或服务器应用程序,则应将错误传递给回调。
答案 1 :(得分:1)
由于大多数错误都是异步的,您可能希望使用回调将错误传播回错误处理程序。
很少使用Try / catch块,仅用于可能失败的少数同步函数,例如JSON.parse()
。