我知道如何handle specific errors in promises但我有时会看到如下代码:
somePromise.then(function(response){
otherAPI(JSON.parse(response));
});
有时,我会在JSON.parse
throw
时获得无效的JSON,导致无声失败。一般来说,我必须记住在我的代码中为每个承诺添加一个.catch
处理程序,当我不知道时,我无法找到忘记密码的地方。
如何在代码中找到这些抑制错误?
答案 0 :(得分:16)
从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,并且不太可能。您可以使用扩展本机promise API的promise库,例如bluebird,它将触发与现代版本相同的事件。