使用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个功能?
答案 0 :(得分:1)
但是在异步函数中,似乎错误需要在方法的每个步骤中进行处理。
情况并非如此。就像承诺一样,只需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!!"));