在方法上使用 try/catch

Use try/catch on method

我对许多对象方法使用了多个相同的 try/catch 测试。所以,我想为重构我的代码创建 try/catch 方法,但没有返回错误。

例如:

  @autobind
  async forgottenPassword(req, res) {
    return this.callService(
      res,
      async () => await companyService.forgottenPassword(req.body.formData)
    );
  }

  callService(res, func) {
    try {
      func();
    } catch (error) {
      res.statusMessage = error.message;
      res.status(error.statusCode);
    } finally {
      res.end();
    }
  }

我的 catch 从未被调用过 :/

有谁知道我弄错了吗?

谢谢!

您需要调用服务 async 并在那里使用 await

  @autobind
  async forgottenPassword(req, res) {
    return this.callService(
      res,
      async () => await companyService.forgottenPassword(req.body.formData)
    );
  }

  async callService(res, func) {
    try {
      await func();
    } catch (error) {
      res.statusMessage = error.message;
      res.status(error.statusCode);
    } finally {
      res.end();
    }
  }