我想测试我的异步函数查询一个不存在的表。因此,错误是故意产生的。
async function getPosts() {
try {
const connection = await dbConnection()
const result = await connection.query('SELECT * FROM x')
await connection.release()
console.log(result)
}
catch(ex) {
throw new Error(ex)
}
}
当我调用该函数时:
UnhandledPromisejectionWarning:错误:error:er\u no\u这样的表:表“test.x”不存在。
你能告诉我为什么吗?
2条答案
按热度按时间bnl4lu3b1#
嗨,过去的我自己!
您的控制台显示一个未处理的错误,因为在catch块中,您(我)愚蠢地重新抛出了一个javascript错误?
把它拿走
throw new Error(ex)
从你的catch
用一些错误处理逻辑来改变它。n3schb8v2#
你越来越
UnhandledPromiseRejectionWarning
因为你没有添加.catch
处理程序到getPosts()
```getPosts()
.then(console.log)
.catch(console.error); // You're missing this
无需添加
try/catch
在你的getPosts
如果要在不做任何修改的情况下再次抛出错误,则返回函数。只是让它冒泡,并处理错误时调用getPosts()
如上图所示。关于当前的错误,您正在尝试对不存在的表执行查询。
您可以在下面的问题中了解更多:什么是未处理的拒绝承诺?