Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何正确处理nodejs中的异步错误_Node.js_Sequelize.js - Fatal编程技术网

Node.js 如何正确处理nodejs中的异步错误

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")):

下面的代码解释主异步进程中的两个异步代码。我的问题是“userController.insertUser”--捕获了一些错误,但该错误无法抛出主捕获

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中出现类似语法错误的错误