Блокирует ли перехват уже пойманные исключения в JavaScript? - PullRequest
0 голосов
/ 10 октября 2018
try {
    await function1()
    await function2()
    await function3().catch(err => { /*...*/ })
} catch (err) { /*...*/ }

Мой вопрос заключается в том, перехватывает ли блок catch исключение, выданное function3, даже если исключение уже было "перехвачено" через .catch(err => ...)?


Еслиблок catch ловит исключение из function3, мой вопрос, как предотвратить это поведение?

Моя цель в основном перехватить определенные исключения этих функций и использовать блок catch для каждого не обработанногоисключение.

Ответы [ 3 ]

0 голосов
/ 10 октября 2018

Блок catch в вашем внешнем методе не будет перехватывать исключение, выданное из function3, если оно уже перехвачено в fuction3.

0 голосов
/ 10 октября 2018

logic behind the try catch

Сначала сработает:

await function3().catch(err => { /*...*/ }) 

До запуска:

} catch (err) { /*...*/ }
0 голосов
/ 10 октября 2018

Как только ошибка «поймана», она не будет распространяться вверх.Вам нужно будет что-то сгенерировать после того, как вы поймете ошибку один раз, если хотите, чтобы она еще больше возросла.Что-то вроде:

try {
  await function1();
  await function2();
  await function3().catch(err => {
    function3ErrorHandler(err);
    throw err;
  });
} catch (err) {
  generalErrorHandler(err);
}
...