Почему событие не может поймать ошибку?

window.addEventListener('unhandledrejection', function(event) {console.log
  console.log(event.promise); 
  console.log(event.reason); 
});

new Promise(function(resolve, reject) {
  setTimeout(() => {
    throw new Error("Whoops!");
  }, 1000);
}).catch(console.log);


Ответы (1 шт):

Автор решения: Dmitry

Обработчик события unhandledrejection сработает, когда Promise завершится с ошибкой и на ошибку не установлен обработчик.

В вашем примере вам нужно вызвать метод reject() внутри промиса и убрать обработчик ошибки, установленный с помощью .catch(), тогда сработает обработчик события unhandledrejection.

window.addEventListener('unhandledrejection', function(event) {
  console.log(event.promise); 
  console.log(event.reason);
});

new Promise(function(resolve, reject) {
  setTimeout(() => {
    reject(new Error("Whoops!"));
  }, 1000);
});

→ Ссылка