使用 Javascript 中的常规函数,您可以将错误抛出到调用堆栈中并在非直接调用者中处理它,如下所示:
var a = function () {
throw new Error ("MyError!!!!");
};
var b = function () {
a();
};
try {
b();
} catch (e) {
console.log ("CAUGHT!!");
}
但是在异步(async/await)函数中,似乎需要在每一步中处理错误。
如果我在异步函数中有一些可重用的功能,需要抛出错误,有没有办法处理非直接调用者的错误(如示例中 - 调用堆栈向下 2 层而不是 1 层)所以我不会用样板来介绍使用它的 N 个函数以及使用这 N 个函数的 M 函数?
最佳答案
But in async functions it seems the error needs to be handled on every step of the way.
事实并非如此。就像 Promises 一样,只需在需要捕获错误的级别 catch
即可。 async
函数返回 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!!"));
关于javascript - 如何在异步函数中抛出错误并仅在非直接调用者中处理它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184098/