Koa 错误处理:`return` 是必要的吗?

Koa Error Handling: is `return` necessary?

我正在使用 koa-routers 来处理向第三方发送电子邮件请求的路由 api。我的错误处理正确吗?我需要 return 什么吗?我应该 return ctx.response 吗?我看到一些例子以 await next() 结束函数。但是,我假设我不需要这个,因为下游没有其他 func/middleware。

router.post('sendemail', async (ctx) => {
  const emailData = ctx.request.body;
  try {
    await someEmailApi({
      recipient: {
        name: emailData.recipientName,
        address: emailData.recipientEmail,
      },
      sender: {
        name: emailData.senderName,
        address: emailData.senderEmail,
      },
      subject: mail.subject,
      message: mail.message,
    });

    ctx.response.status = 200;
    ctx.response.body = 'OK';
  } catch (err) {

    ctx.response.status = err.status;
    ctx.response.body = err.message';
    ctx.throw(ctx.response.status, ctx.response.body);
  }
});

所以因为这是一个路由处理程序,你通常不会调用 await next() 因为路由处理程序无论如何都是 "inner-most" 中间件,所以 next() 是一个空操作。

如果您正在使用 ctx.throw,则无需单独设置状态和正文。

这应该足够了:

ctx.throw(err.status, err.message)