Подія unhandledrejection
посилається у глобальну область видимості скрипта, коли об'єкт JavaScript Promise
, що не має обробника відхилення, відхиляється; зазвичай, це window
, але також може бути Worker
. Це корисно для відлагодження та для надання резервної обробки помилок у неочікуваних ситуаціях.
Спливає | Ні |
---|---|
Скасовується | Так |
Інтерфейс | PromiseRejectionEvent |
Обробник подій | onunhandledrejection |
Примітки щодо використання
Дозвіл події unhandledrejection
спливати зрештою призведе до виводу повідомлення помилки у консолі. Ви можете запобігти цьому, викликавши preventDefault()
на інтерфейсі PromiseRejectionEvent
; дивіться приклад Запобігання обробці за замовчуванням нижче.
Приклади
Тут ми маємо кілька прикладів, які демонструють, як ви можете скористатись подією unhandledrejection
. Подія містить деяку корисну інформацію:
Базове логування помилки
Цей приклад просто логує інформацію щодо необробленого відхилення проміса у консоль.
window.addEventListener("unhandledrejection", event => {
console.warn(`НЕОБРОБЛЕНЕ ВІДХИЛЕННЯ ПРОМІСА: ${event.reason}`);
});
Ви також можете скористатись обробником подій onunhandledrejection
, щоб налаштувати прослуховувач подій:
window.onunhandledrejection = event => {
console.warn(`НЕОБРОБЛЕНЕ ВІДХИЛЕННЯ ПРОМІСА: ${event.reason}`);
};
Запобігання обробці за замовчуванням
Багато середовищ (таких як Node.js) за замовчуванням виводять необроблені відхилення промісів у консоль. Ви можете запобігти цьому, додавши обробник для подій unhandledrejection
, що — на додачу до будь-яких інших задач, які ви бажаєте виконати — викликає preventDefault()
, щоб скасувати подію, запобігаючи її спливанню та обробці кодом логування під час виконання. Це працює, тому що unhandledrejection
скасовується.
window.addEventListener('unhandledrejection', function (event) {
// ...тут ваш код, який обробляє необроблені відхилення...
// Запобігти обробці за замовчуванням (наприклад, виводу
// помилки у консоль)
event.preventDefault();
});
Специфікації
Специфікація | Статус | Коментар |
---|---|---|
HTML Living Standard The definition of 'unhandledrejection' in that specification. |
Living Standard | Початкове визначення. |
Сумісність з веб-переглядачами
BCD tables only load in the browser
Див. також
- Події відхилення промісів in Використання промісів
- Обробник подій
onunhandledrejection
1 - Подія rejectionhandled
Promise
[1] Відповідний обробник подій визначений як властивість у домішці WindowEventHandlers
, яка доступна як у інтерфейсі Window
, так і в усіх типах інтерфейсів Worker
.