Spec-Zone.ru › Web APIs

Окно: событие unhandledrejection

Событие unhandledrejection отправляется в глобальную область видимости скрипта при отклонении JavaScript Promise, у которого нет обработчика отклонения; обычно это window, но также может быть Worker.

Это полезно для отладки и для предоставления резервного обработки ошибок в неожиданных ситуациях.

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или задайте свойство обработчика события.

addEventListener("unhandledrejection", (event) => {});
onunhandledrejection = (event) => {};

Тип события

A PromiseRejectionEvent. Наследуется от Event.

Событие PromiseRejectionEvent

Свойства события

PromiseRejectionEvent.promise Только для чтения

JavaScript Promise, который был отклонен.

PromiseRejectionEvent.reason Только для чтения

Значение или Object, указывающее, почему промис был отклонен, как передано в Promise.reject().

Псевдонимы обработчика событий

В дополнение к интерфейсу Window, свойство обработчика событий onunhandledrejection также доступно на следующих объектах:

  • HTMLBodyElement
  • HTMLFrameSetElement
  • SVGSVGElement

Примечания по использованию

Разрешение события unhandledrejection на всплытие в конечном итоге приведет к выводу сообщения об ошибке в консоль. Вы можете предотвратить это, вызвав preventDefault() для PromiseRejectionEvent; см. Предотвращение обработки по умолчанию ниже для примера.

Поскольку это событие может вызывать утечку данных, отклонения Promise, которые исходят из скрипта другого домена, не будут вызывать это событие.

Примеры

Базовая регистрация ошибок

В этом примере регистрируется информация об отклонении необработанного промиса в консоли.

window.addEventListener("unhandledrejection", (event) => {
  console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});

Вы также можете использовать свойство обработчика событий onunhandledrejection для настройки обработчика событий:

window.onunhandledrejection = (event) => {
  console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};

Предотвращение обработки по умолчанию

Многие среды (например, Node.js) по умолчанию сообщают об отклонениях необработанных промисов в консоли. Вы можете предотвратить это, добавив обработчик для событий unhandledrejection , который, помимо любых других задач, которые вы хотите выполнить, вызывает preventDefault() для отмены события, предотвращая его всплытие и обработку кодом регистрации среды выполнения. Это работает, потому что событие unhandledrejection отменяемо.

window.addEventListener("unhandledrejection", (event) => {
  // code for handling the unhandled rejection
  // …

  // Prevent the default handling (such as outputting the
  // error to the console)

  event.preventDefault();
});

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

Спецификация
HTML
# event-unhandledrejection
HTML
# handler-window-onunhandledrejection

Совместимость с браузерами

Рабочий стол Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
unhandledrejection_event 49 79
69event.preventDefault() не предотвращает Firefox от вывода сообщения об ошибке в консоли, см. ошибку 1642147.
36 11 49
79event.preventDefault() не предотвращает Firefox для Android от вывода сообщения об ошибке в консоли, см. ошибку 1642147.
36 11.3 5.0 49

См. также

  • События отклонения промисов
  • rejectionhandled событие
  • Promise

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API