使用 Promise Chaining 进行异步错误处理
使用异步代码时,考虑如何有效处理错误至关重要。未捕获的异常可能会使您的应用程序崩溃,因此制定适当的策略非常重要。
在所描述的场景中,使用抛出错误的 setTimeout 创建 Promise。 Bluebird Promise 的 catch 处理程序不会捕获此错误,因为它发生在异步回调中。
Promises 中的异常处理
Promises 可以捕获在其中抛出的异常他们自己的回调函数。要处理此类错误,您可以:
function getPromise() {
return new Promise(function(done, reject) {
setTimeout(done, 500);
}).then(function() {
console.log("hihihihi");
throw new Error("Oh no!");
});
}
这里,错误在 then 回调中抛出,这确保了它会被 Promise 的 catch 处理程序捕获。
异步回调的注意事项
重要的是要记住,Promise 不会捕获不在其自身权限范围内的异步回调的异常。要处理这些类型的错误,请考虑:
流氓异步回调处理示例
要在 Node.js 或浏览器中处理流氓异步回调,您可以使用以下方法:
function getPromise() {
return new Promise(function(done, reject) {
setTimeout(function() {
try {
// Your rogue async callback here
console.log("hihihihi");
} catch (e) {
reject(e);
}
}, 500);
});
}
通过手动处理回调中的任何异常,此方法可确保它们不会使您的应用程序崩溃。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3