Используйте метод try / catch - PullRequest
0 голосов
/ 29 октября 2018

Я использую несколько одинаковых тестов 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 голосов
/ 29 октября 2018

Вам нужно сделать вашу 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();
    }
  }
...