【发布时间】:2019-08-04 06:41:03
【问题描述】:
在实际代码中,我从 SQL 数据库中获取 accounts。然后,对于accounts 中的每一个account,我都会调用一些方法a()、b()、c()。
我想要的是,如果在我调用a()、b()、c() 时由于任何原因发生错误(异常),则执行将停止并继续循环中的下一次迭代,即是,与下一个帐户。
所以,给定示例代码:
const accounts = ['a1', 'a2', 'a3']
async function a() {
await console.log('A');
}
async function b() {
await console.log('B');
throw new Error('B throws Error');
}
async function c() {
await console.log('C');
}
async function main() {
for (const account of accounts) {
try {
await a();
await b();
await c();
} catch(e) {}
}
}
main();
a() 和 b() 将被调用,并给出以下输出:
A
B
A
B
A
B
那么,如果我在 b() 中添加一个 try/catch
async function b() {
try {
await console.log('B');
throw new Error('B throws Error');
} catch(e) {
}
}
运行该代码时,我会得到:
A
B
C
A
B
C
A
B
C
尽管在b() 中引发了异常,但c() 也由于try/catch 被执行...
我的问题是:
如果我无法让应用程序在捕获中处于可靠状态...是 有一种方法可以让我在内部方法中继续使用 try/catch-s 但是 停止执行,所以
c()不会被执行?
ps。如果我使用异常的方式是错误的。您能帮助阐明正确的用法吗?
【问题讨论】:
标签: javascript node.js exception