我知道如果我们有这样的try-catch设置:
try{
runSyncFunction()
}
catch(err){
cosole.log(err)
}
如果runSyncFunction
中存在错误,捕获错误将触发。
根据我的理解,如果我们尝试像这样的catch设置:
try{
runAsyncFunction()
}
catch(err){
cosole.log(err)
}
如果runAsyncFunction
中存在错误,则不会触发捕获错误,因为该函数将在以后运行。
我不明白的是,当我们使用wait时,为什么catch错误不会触发:
try{
await runAsyncFunction()
}
catch(err){
cosole.log(err)
}
如果这次异步函数中出现错误,并且由于javascript引擎正在等待它完成运行,为什么在出现错误时它不能捕获错误呢。
编辑1:
router.post("/postDetails", async(req, res) => {
try{
let partID = await database.getPartID(partNumber[i])
if (!partID) {
throw createError(404, `"${partNumber[i]}" PartNumber not
found. Please re-enter the partnumber`)
}
//Other stuff
}
catch(err){
console.log(err)
}
})
第二个功能:
database.getPartID = async function getPartID(partNumber){
try{
let partID = await pool.query(`Select partID from parts where partNumber = '${partNumber}'`)
return partID[0].partID
}
catch(err){
console.log(err)
return false
}
}
我返回false是因为当存在try catch块时,如果第二个异步函数中存在错误,则第一个异步函数不会抛出错误消息
以下是一些使用尝试的提示。。。捕获
我们可以用try... catch
来表示同步代码。
我们可以使用try... cat
(与async
函数结合使用)和. cat()
方法来处理异步代码的错误。
在try块中返回promise时,如果希望尝试,请确保
等待它。。。catch
块以捕获错误。
不管你多么精通编程,有时我们的脚本总还是会出现错误。可能是因为我们的编写出错,或是与预期不同的用户输入,或是错误的服务端响应以及其他数千种原因。 通常,如果发生错误,脚本就会“死亡”(立即停止),并在控制台将错误打印出来。 但是有一种语法结构 try..catch,它使我们可以“捕获(catch)”错误,因此脚本可以执行更合理的操作,而不是死掉。 “try…catch” 语法 try..catch
我正在尝试捕获caller方法中的IllegalAccessException。但它抓不到它。而是给出了一个错误。
问题内容: 我正在审查一些新代码。该程序仅具有try和finally块。由于不包含catch块,如果try块遇到异常或任何可抛出的异常,它将如何工作?它是否直接进入了finally块? 问题答案: 如果try块中的任何代码都可以引发已检查的异常,则它必须出现在方法签名的throws子句中。如果引发了未经检查的异常,则该异常会冒泡退出方法。 无论是否引发异常,都始终执行finally块。
问题内容: 我最初从大学开始编程,然后学习了vb.net。现在,我决定转向Java并进行一些查询。在vb中,try catch语句的布局如下 但是在Java网站(https://docs.oracle.com/javase/tutorial/essential/exceptions/putItTogether.html)中,我发现在Java中,您使用了两个陷阱,如下所示: 我希望有人能够解释为什么
问题内容: 我读到try-with-resources 中的块是可选的。我试图在try-with- resources块中创建一个对象,没有后续块,只是从eclipse中获取编译器错误:“ 自动调用引发了未处理的异常类型。” 由于可以在try-with- resources中使用的每个资源都实现了,因此在调用该方法时可能会引发异常,因此我不明白该子句是可选的,因为它不允许我跳过从中捕获异常的过程。
例如: 将在Kotlin中编译,但在Java中会出现编译器错误。为什么?