gpt4 book ai didi

node.js - 如何在 node.js 中使用本地 promise 全局处理异常?

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:48 25 4
gpt4 key购买 nike

我知道如何 handle specific errors in promises但我有时会有这样的代码片段:

somePromise.then(function(response){
otherAPI(JSON.parse(response));
});

有时,当 JSON.parse throw 时,我会得到无效的 JSON,这会导致静默失败。通常,我必须记住为我的代码中的每个 promise 添加一个 .catch 处理程序,如果我不这样做,我将无法找出我在哪里忘记了一个处理程序。

如何在我的代码中找到这些被抑制的错误?

最佳答案

编辑

我们终于在 Node.js 15 中修复了这个问题,这花了 5 年时间,但原生 promise 拒绝现在表现得像未捕获的异常 - 所以只需添加一个 process.on('uncaughtException'处理程序。

现代 Node.js

从 io.js 1.4 和 Node 4.0.0 开始,您可以使用 process "unhandledRejection" 事件:

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,而且不太可能。您可以使用扩展 native promise API 的 promise 库,例如 bluebird这将触发与现代版本中相同的事件。


还值得一提的是,有几个用户态 promise 库提供未处理的拒绝检测功能以及更多功能,例如 (也有警告)和 .

关于node.js - 如何在 node.js 中使用本地 promise 全局处理异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28709666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com