我有一个简单的express服务器,其中我有函数,在这个函数中,我尝试从mongoDB访问数据,以下是代码
const test =async()=>{
try{
const data = await User.findOne({_id: "1234"})
}catch(err){
const data = await User.findOne({_id: "4567"})
}
在此函数中,try块工作正常,但无论何时发生错误,catch块中的代码都不工作,我在catch块中有try return和console.log(),它们也不工作,以下是代码
catch(err){
console.log("hello")
}
或
catch(err){
return "hello"
}
没有什么是不工作在捕捉块,我不能理解这个问题,请帮助我
2条答案
按热度按时间gjmwrych1#
代码中的问题是,您在catch块中重新声明了data变量,这意味着try块中声明的原始变量不再在作用域中,这就是return语句或console.log()不起作用的原因。
你可以通过从catch块返回值或者简单地将变量声明移出try-catch块来解决这个问题,如下所示:
}
或者
}
通过这种方式,您将能够访问catch块中的数据变量,并对它执行任何您喜欢的操作,无论是返回它,还是将数据记录到控制台。
chy5wohz2#
我在注解中看到了你的代码的问题。问题是没有实现catch块来捕捉try块抛出的错误,因此代码终止使用它,就像这样
不使用catch{},而是实现catch块。