javascript - 如何在异步函数中抛出错误并仅在非立即调用者中处理?
问题描述
使用 Javascript 中的常规函数,您可以在调用堆栈中抛出错误并在非立即调用者中处理它,如下所示:
var a = function () {
throw new Error ("MyError!!!!");
};
var b = function () {
a();
};
try {
b();
} catch (e) {
console.log ("CAUGHT!!");
}
但是在异步(异步/等待)函数中,似乎需要在每一步都处理错误。
如果我在异步函数中有一些可重用的功能,需要抛出错误,有没有办法处理非立即调用者的错误(如示例中 - 调用堆栈下降 2 级而不是 1 级)所以我不'没有用样板覆盖使用它的N个函数和使用那些N个函数的M个函数?
解决方案
但是在异步函数中,似乎需要在每一步都处理错误。
不是这种情况。就像 Promises 一样,只是catch
在你需要捕获错误的级别。毕竟async
函数 return :Promises
var a = async function () {
throw new Error ("MyError!!!!");
};
var b = async function () {
await a();
};
var c = async function () {
await b();
};
c().catch(e => console.log ("CAUGHT!!"));
推荐阅读
- java - JOOQ - 递归查询
- amazon-web-services - Amazon AWS RDS 预置存储成本
- python - 如何设置目录的路径?
- c++ - 如何在 Linux 的控制台应用程序中播放声音文件?C++
- reactjs - 将域添加到我的网站后未设置 HttpOnlyCookie
- python - 如何在一行中为 discord.py 发送多个反应
- sql - SpringJPA - 不一致的数据类型:预期 NUMBER 得到 BINARY
- python - 相对于绘图坐标设置 xticks
- python - 提供的关键元素与模式 update_item dynamodb 不匹配
- google-cloud-platform - 来自云工作流的云函数触发器返回 http 500