我知道怎么做处理承诺中的特定错误 https://stackoverflow.com/questions/21800010/how-do-i-handle-errors-with-promises但有时我的代码片段看起来像这样:
somePromise.then(function(response){
otherAPI(JSON.parse(response));
});
有时,我会收到无效的 JSON,这会在以下情况下导致静默失败:JSON.parse
throw
s。一般来说,我必须记住添加一个.catch
我的代码中的每一个承诺的处理程序,当我不这样做时,我无法找到我忘记的地方。
如何在我的代码中找到这些被抑制的错误?
Edit
我们终于在 Node.js 15 中解决了这个问题,花了 5 年时间,但本机 Promise 拒绝现在的行为就像未捕获的异常 - 所以只需添加一个就可以了process.on('uncaughtException'
处理程序。
在现代 Node.js 中
从 io.js 1.4 和 Node 4.0.0 开始,您可以使用process
"unhandledRejection"
event:
process.on("unhandledRejection", function(reason, p){
console.log("Unhandled", reason, p); // log all your errors, "unsuppressing" them.
throw reason; // optional, in case you want to treat these as errors
});
这结束了未处理的拒绝问题以及在代码中追踪它们的困难。
在旧版 NodeJS 中
这些事件尚未向后移植到旧版本的 NodeJS,而且也不可能向后移植。您可以使用扩展原生 Promise API 的 Promise 库,例如bluebird https://www.npmjs.com/package/bluebird这将触发与现代版本中相同的事件。
还值得一提的是,有几个用户态承诺库提供未处理的拒绝检测设施以及更多,例如bluebird /questions/tagged/bluebird(其中也有警告)和when /questions/tagged/when.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)