Ошибка перехвата, возникающая при перехвате обещания - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь отловить ошибку, которая может быть вызвана перехватом другого обещания. (извините, если это сбивает с толку ...)

async function throwingError () {
  throw new Error('this error needs to be caught'); // I don't know if I need to return, throw or something else. This function may or may not have an error
};

async function mainFunction () {
  promiseFunction()
    .catch(error => {
      throwingError();
      // I've tried throw throwingError() and return Promise.reject(throwingError());
    });
};

mainFunction().catch(error => `caught: ${console.error}`);

Прямо сейчас он не обнаруживает ошибку.
Насколько я знаю, это не работает, потому что promises fini sh в разное время, но я не уверен.

Ответы [ 2 ]

1 голос
/ 09 мая 2020

Ваш mainFunction должен вернуть обещание. Чего вам не хватает, так это утверждения return. Вам также нужно вернуть throwingError() в блоке catch.

Без оператора return значение, возвращаемое вашим mainFunction, является обещанием, которое всегда разрешается в undefined

async function mainFunction () {
  return promiseFunction()
    .catch(error => {
      return throwingError();
    });
};


0 голосов
/ 09 мая 2020

Вам нужно вернуть обещание.

function throwingError () {
  throw new Error('this error needs to be caught');
}
function mainFunction () {
  return new Promise((resolve, reject) => {
    reject(throwingError())
  })
};

mainFunction().catch(error => console.log(`caught: ${error}`));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...