使用try / catch on方法

时间:2018-10-29 14:56:31

标签: javascript try-catch try-catch-finally

我在多个对象方法上使用了多个相同的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从未被称为:/

有人知道我做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要制作自己的callService 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();
    }
  }