是否有 javascript 处理运行时错误的 promise 库?

Is there a javascript promise library that handles runtime errors?

到目前为止,我已经尝试比较 Parse.PromiseQBluebird,但我无法获得 errorcatch阻止 handle/capture 异步运行时错误。

如果您认为上面提到的库之一,可以 handle/capture 异步运行时错误并怀疑我可能没有正确编写我的示例代码,请随时指出任何错误:https://github.com/pulkitsinghal/example-promises

否则,我正在寻找其他要探索的承诺库或框架的建议。

图书馆根本不可能处理超出其控制范围的错误。 promise 库是 throw safe 的唯一原因是因为 promise 使用 return 值来吸收其他 promise。

如果您的所有代码 returns promises 而不是回调,所有 A+ promise 库(在您的示例中是 Q 和 Bluebird 但不是 Parse.promise)将捕获 运行time 错误并且bluebird 甚至会自动报告它们,而无需 .catch 它们。

域正在被弃用并且在实践中并不能很好地工作并且没有节点范围的解决方案。您唯一的选择确实是在整个应用程序范围内遵守承诺。您 必须 在出现未捕获的异常时终止并重新启动服务器,因为节点代码中抛出这些异常的某些部分在抛出时不会很好地清理(这就是为什么不推荐使用域的部分原因)首先)。

所以:

  • Promises 如果您在整个应用程序范围内使用 promises,则 运行time 错误是安全的。
  • 如果您必须 运行 可能抛出的不受信任的代码,请考虑 运行使用 vm 模块将其安装在 VM 中。
  • 有时会出现节点错误,让您别无选择,只能重新启动服务器。
  • 可能的最低级别承诺以避免承诺函数抛出。

Here is a broader question that discusses async error-handling in NodeJS.