节点式回调:完成(异常)还是抛出异常?

时间:2014-09-19 14:12:48

标签: javascript node.js exception

正如我所看到的,通常会看到这一行:

if (err) return done(err);

但据我理解,我可以这样做:

if (err) throw err;

看起来很漂亮,效果很好。那有什么区别?

是的,我知道承诺,我喜欢他们,但我仍然想知道这个问题的答案。

2 个答案:

答案 0 :(得分:2)

你可以做到

if (err) throw err;

如果错误是致命的,并且您希望程序崩溃,因为无法捕获此类错误。如果您编写库或服务器应用程序,则应将错误传递给回调。

答案 1 :(得分:1)

由于大多数错误都是异步的,您可能希望使用回调将错误传播回错误处理程序。

很少使用Try / catch块,仅用于可能失败的少数同步函数,例如JSON.parse()