如何在Node,js中处理异常控制?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Node,js中处理异常控制?相关的知识,希望对你有一定的参考价值。
使用以下代码:
async function demo(){
const ret1, ret2, ret3;
try {
ret1 = await task1();
} catch (e) {
// ...
}
if(!ret1.success) {
return ret1.message;
}
try {
ret2 = await task2();
} catch (e) {
// ...
}
if(!ret2.success) {
// retry or rollback task1;
return;
}
try {
ret3 = await task3();
} catch (e) {
// ...
}
if(!ret3.success) {
// retry or rollback task1
return;
}
return ret3;
}
task2依赖于task1,task3依赖于task2。此外,task1将在db中插入数据,因此如果task2或task3失败,它应该重试或回滚task1。任何更好的管理任务的解决方案?事实上,将有超过3个任务。
答案
完美的方式有点主观,但我认为这个更好。肯定有这样做的方法,例如,如果你使用promise然后格式,因此下面应该工作
const demo = () => {
return task1()
.then(() => task2())
.then(() => task3())
.then(() => task4())
.then(() => task5())
.then(() => {
throw new Error("Testing Error");//Line 8
})
}
demo()
.catch(err => {
console.log(err);
// output
// Error: Testing Error at task1.then.then.then.then.then index.js:8:13)
});
当使用async时,下面的格式应该可行
const demo = async () => {
await task1()
await task2()
await task3()
await task4()
await task5()
throw new Error("Testing Error");//Line 7
}
demo()
.catch(err => {
console.log(err);
// output
// Error: Testing Error at demo (index.js:7:9)
});
以上是关于如何在Node,js中处理异常控制?的主要内容,如果未能解决你的问题,请参考以下文章
在 node.js/angular 应用程序中查询来自不同主机的数据时,如何遵守访问控制起源异常? [复制]