javascript - Koa-内置函数和异步/等待中的错误处理

标签 javascript node.js error-handling async-await koa

在我的app.js中,我有以下内容...

app.use(async (ctx, next) => {
  try {
    await next()
  } catch (err) {
    ctx.status = 400
    ctx.body = `Uh-oh: ${err.message}`
    console.log('Error handler:', err.message)
  }
});

app.use(router());
然后在我定义的 route ...
router.post('/', retrieve);
例如,如果我在retrieve内抛出错误,它将冒泡到app.js,例如...
const retrieve = async ctx => {
  throw new Error('test');
};
我知道了

Uh oh: test


现在让我们说我有一个像这样的函数,我想抛出一个错误...
const retrieve = async ctx => {
  await s3.createMultipartUpload({
    Bucket: "test",
    Key: "testName",
    ContentType: "contentType"
  }, (err, mpart) => {
    throw new Error("test");
  });
}
它不会冒泡到app.js,而是显示以下内容...

Error: test at Response.s3.createMultipartUpload ....


为什么没有将它冒泡到app.js?我该怎么办?

最佳答案

我解决问题的方法是使用promise格式...

await s3.createMultipartUpload({
  Bucket: "test",
  Key: "testName",
  ContentType: "contentType"
})
.promise()
.then(data => {
  //Do Stuff
}).catch(err => { throw new Error('test') });

关于javascript - Koa-内置函数和异步/等待中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63677456/

相关文章:

javascript - 为 ISO 包装器制作日期

node.js - 使用 express.js 在响应 header 中设置 token 值

javascript - Node.js - 当 Nginx 反向代理提供服务时,Websocket 拒绝打开连接

api - 无法使用从 swagger api 生成的客户端

c# - 如何从 asp.net 处理程序返回 404 错误?

javascript - Javascript 中用于 Error() 处理的"new"运算符

javascript - GetJSON方法只拉取数组,不拉取特定字段

javascript - Google 脚本 Javascript 日期错误

javascript - 似乎无法 trim 所有前导空格 - JavaScript 或 jQuery

javascript - 检测浏览器是否正在执行重定向