节点样式回调:完成(异常)或抛出异常

Node-style callbacks: done(exception) or throw exception?

本文关键字:异常 抛出异常 完成 样式 回调 节点      更新时间:2023-09-26

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

if (err) return done(err);

但据我所知,我可以做到这一点:

if (err) throw err;

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

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

您可以进行

if (err) throw err;

如果错误是致命的,并且您希望您的程序崩溃,因为没有办法捕捉到这样的错误。若编写库或服务器应用程序,则应将错误传递给回调。

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

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