--- title: 'Window: подія unhandledrejection' slug: Web/API/Window/unhandledrejection_event tags: - API - Event - HTML DOM - JavaScript - Promise - Window - Worker - unhandledrejection - Проміс - відхилення - подія translation_of: Web/API/Window/unhandledrejection_event ---
{{APIRef("HTML DOM")}}

Подія unhandledrejection посилається у глобальну область видимості скрипта, коли об'єкт JavaScript {{jsxref("Promise")}}, що не має обробника відхилення, відхиляється; зазвичай, це {{domxref("window")}}, але також може бути {{domxref("Worker")}}. Це корисно для відлагодження та для надання резервної обробки помилок у неочікуваних ситуаціях.

Спливає Ні
Скасовується Так
Інтерфейс {{domxref("PromiseRejectionEvent")}}
Обробник подій {{domxref("WindowEventHandlers.onunhandledrejection", "onunhandledrejection")}}

Примітки щодо використання

Дозвіл події unhandledrejection спливати зрештою призведе до виводу повідомлення помилки у консолі. Ви можете запобігти цьому, викликавши {{domxref("Event.preventDefault", "preventDefault()")}} на інтерфейсі {{domxref("PromiseRejectionEvent")}}; дивіться приклад {{anch("Запобігання обробці за замовчуванням")}} нижче.

Приклади

Тут ми маємо кілька прикладів, які демонструють, як ви можете скористатись подією unhandledrejection. Подія містить деяку корисну інформацію:

promise
Власне, {{jsxref("Promise","проміс")}}, який був відхилений, не маючи обробника, який зреагував би на відхилення.
reason
Причина, яка була б передана у обробник відхилення, якби він існував. Дивіться більше інформації у {{jsxref("Promise.catch", "catch()")}}.

Базове логування помилки

Цей приклад просто логує інформацію щодо необробленого відхилення проміса у консоль.

window.addEventListener("unhandledrejection", event => {
  console.warn(`НЕОБРОБЛЕНЕ ВІДХИЛЕННЯ ПРОМІСА: ${event.reason}`);
});

Ви також можете скористатись обробником подій {{domxref("WindowEventHandlers.onunhandledrejection", "onunhandledrejection")}}, щоб налаштувати прослуховувач подій:

window.onunhandledrejection = event => {
  console.warn(`НЕОБРОБЛЕНЕ ВІДХИЛЕННЯ ПРОМІСА: ${event.reason}`);
};

Запобігання обробці за замовчуванням

Багато середовищ (таких як {{Glossary("Node.js")}}) за замовчуванням виводять необроблені відхилення промісів у консоль. Ви можете запобігти цьому, додавши обробник для подій unhandledrejection, що — на додачу до будь-яких інших задач, які ви бажаєте виконати — викликає {{domxref("Event.preventDefault()", "preventDefault()")}}, щоб скасувати подію, запобігаючи її спливанню та обробці кодом логування під час виконання. Це працює, тому що unhandledrejection скасовується.

window.addEventListener('unhandledrejection', function (event) {
  // ...тут ваш код, який обробляє необроблені відхилення...

  // Запобігти обробці за замовчуванням (наприклад, виводу
  // помилки у консоль)

  event.preventDefault();
});

Специфікації

Специфікація Статус Коментар
{{SpecName('HTML WHATWG', 'webappapis.html#unhandled-promise-rejections', 'unhandledrejection')}} {{Spec2('HTML WHATWG')}} Початкове визначення.

Сумісність з веб-переглядачами

{{Compat("api.Window.unhandledrejection_event")}}

Див. також

[1] Відповідний обробник подій визначений як властивість у домішці {{domxref("WindowEventHandlers")}}, яка доступна як у інтерфейсі {{domxref("Window")}}, так і в усіх типах інтерфейсів {{domxref("Worker")}}.