Node.js 如何正确处理nodejs中的异步错误
下面的代码解释主异步进程中的两个异步代码。我的问题是“userController.insertUser”--捕获了一些错误,但该错误无法抛出主捕获Node.js 如何正确处理nodejs中的异步错误,node.js,sequelize.js,Node.js,Sequelize.js,下面的代码解释主异步进程中的两个异步代码。我的问题是“userController.insertUser”--捕获了一些错误,但该错误无法抛出主捕获 DataMiddleware.DataValidate(Object).then((middlewareSuccess) => { switch (true) { case ((tableName === "users") && (method === "CREATE")):
DataMiddleware.DataValidate(Object).then((middlewareSuccess) => {
switch (true) {
case ((tableName === "users") && (method === "CREATE")):
userController.insertUser(Object).then(()=> {
...
}).catch((err) => {
return err
})
break;
case ((tableName === "users") && (method === "BATCH")):
userController.updateUser(Object).then(()=> {
...
}).catch((err) => {
return err
})
break;
}
}).catch((err) => {
console.log("main error",err)
})
如何正确捕获?有两种方法可以处理嵌套的承诺错误 1)在嵌套的承诺中捕获它并将其扔给父级
const数据中间件={
DataValidate:sinon.false.resolves(“值”)
};
常量用户控制器={
插入器:sinon.fake.rejects(“插入器错误”),
updateUser:sinon.false.rejects(“updateUser Erroor”)
};
const tableName=“用户”,
方法=“创建”;
DataMiddleware.DataValidate()
.然后(MiddlewareSucces=>{
开关(真){
案例tableName==“用户”&&method==“创建”:
返回userController.insertUser()
.catch(错误=>{
log(“嵌套捕获处理程序”+err);
犯错误;
});
}
})
.catch(错误=>{
console.log(“主错误”+错误);
});代码>
改为
或返回错误
尝试抛出错误
,或删除嵌套的捕获
,让最后一个处理它们。我尝试抛出err并删除嵌套的catch,但主catch无法捕获是的,当然是我的错误,将return
放在userController.insertUser
和userController.updateUser
之前。最后一个问题是我们使用普通的try-and-catch——在代码上方,因为我想像这样解析我的json{getObject=JSON.parse(getData);DataMiddleware.DataValidate().then(middlewareSuccess=>{}).catch(err=>{console.log(“main error”+err);});}catch(err){}有时在JSON.parse中出现类似语法错误的错误