--- 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 ---
Подія unhandledrejection
посилається у глобальну область видимості скрипта, коли об'єкт JavaScript {{jsxref("Promise")}}, що не має обробника відхилення, відхиляється; зазвичай, це {{domxref("window")}}, але також може бути {{domxref("Worker")}}. Це корисно для відлагодження та для надання резервної обробки помилок у неочікуваних ситуаціях.
Спливає | Ні |
---|---|
Скасовується | Так |
Інтерфейс | {{domxref("PromiseRejectionEvent")}} |
Обробник подій | {{domxref("WindowEventHandlers.onunhandledrejection", "onunhandledrejection")}} |
Дозвіл події unhandledrejection
спливати зрештою призведе до виводу повідомлення помилки у консолі. Ви можете запобігти цьому, викликавши {{domxref("Event.preventDefault", "preventDefault()")}} на інтерфейсі {{domxref("PromiseRejectionEvent")}}; дивіться приклад {{anch("Запобігання обробці за замовчуванням")}} нижче.
Тут ми маємо кілька прикладів, які демонструють, як ви можете скористатись подією unhandledrejection
. Подія містить деяку корисну інформацію:
promise
reason
Цей приклад просто логує інформацію щодо необробленого відхилення проміса у консоль.
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")}}.