gpt4 book ai didi

javascript - Try/catch block 和未处理的 promise 异常

转载 作者:行者123 更新时间:2023-11-29 04:05:00 25 4
gpt4 key购买 nike

我想测试我的异步函数查询一个不存在的表。因此错误是故意产生的。

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)
}
}

当我调用该函数时:

UnhandledPromiseRejectionWarning: Error: Error: ER_NO_SUCH_TABLE: Table 'test.x' doesn't exist.

你能告诉我为什么吗?

最佳答案

您收到 UnhandledPromiseRejectionWarning 因为您没有向 getPosts() 添加 .catch 处理程序


getPosts()
.then(console.log)
.catch(console.error); // You're missing this

或者使用async/await

try {
const posts = await getPosts();
console.log(posts);
} catch(e) { // Missing this
console.error(e);
}

如果您打算在不做任何修改的情况下再次抛出错误,则无需在您的 getPosts 函数上添加 try/catch。让它冒泡,并在调用 getPosts() 时处理错误,如上所示。

async function getPosts() {

const connection = await dbConnection()
const result = await connection.query('SELECT * FROM x')
await connection.release()
return result;
}

关于您当前的错误,您正在尝试对不存在的表执行查询。

您可以在以下问题中了解更多相关信息:What is an unhandled promise rejection?

关于javascript - Try/catch block 和未处理的 promise 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51175821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com