намеренно выкидывать ошибку в обещание? - PullRequest
0 голосов
/ 19 мая 2018

Как нарочно не выполнить обещание?Иногда я просто пропускаю тест и предполагаю, что все в порядке, но я намеренно даю обещание провалиться, чтобы мой улов сработал.

exports.submitJob = async (req, res, next) => {
    const { cv } = req.body
    const userId = req.user._id

    try {

      if(!cv) {
        //how to pass error to catch block?
      }
      const save_submission = new Submission({
        userId,
        cv
      }).save()


    } catch(e => {
      res.json({
        status: 0,
        error: e
      })
    })

    next()
}

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы можете throw new Error('<your string here>');:

Обратите внимание, что catch - это не то, что нужно использовать с синтаксисом function - правильный синтаксис: catch (e) { /* block that uses e */ }

const submitJobWhichWillFail = async (req, res, next) => {
  const cv = null;
  try {
    if (!cv) {
      throw new Error('cv must not be falsey!');
    }
    const save_submission = new Submission({
      userId,
      cv
    }).save()


  } catch (e) {
    console.log('res.json with error ' + e);
  }
}
submitJobWhichWillFail();
0 голосов
/ 19 мая 2018

используйте оператор throw , может быть?

if(!cv) {throw("cv is absent");}

определяемые пользователем типы исключений (как обычно они есть в Java или PHP) также возможны и рекомендуются, потому что одинедва различает тип по строке и в противном случае может легко проверить исключение typeof в блоке catch.только что узнал из MDN, например.также может выдать DOMException и Ошибка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...