Spec-Zone.ru › JavaScript

SuppressedError

Baseline Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Объект SuppressedError представляет ошибку, сгенерированную при обработке другой ошибки. Он генерируется при освобождении ресурсов с использованием using или await using.

По сравнению с AggregateError, SuppressedError представляет ошибку, возникшую при обработке другой ошибки, в то время как AggregateError представляет список несвязанных ошибок. Однако, SuppressedError может содержать цепочку подавленных ошибок (e.suppressed.suppressed.suppressed...). Он также семантически отличается от cause, поскольку ошибка не вызвана другой ошибкой, а возникает при обработке другой ошибки.

SuppressedError является подклассом Error.

Конструктор

SuppressedError()
Создает новый объект SuppressedError.

Свойства экземпляра

Также наследует свойства экземпляра от родительского Error.

Эти свойства определены на SuppressedError.prototype и совместно используются всеми экземплярами SuppressedError.

SuppressedError.prototype.constructor
Функция-конструктор, которая создала объект экземпляра. Для экземпляров SuppressedError начальным значением является конструктор SuppressedError.
SuppressedError.prototype.name
Представляет имя типа ошибки. Для SuppressedError.prototype.name начальным значением является "SuppressedError".

Примечание: SuppressedError никогда не имеет свойства cause, поскольку семантика cause пересекается с suppressed.

Эти свойства являются собственными свойствами каждого экземпляра SuppressedError.

error
Ссылка на ошибку, которая привела к подавлению.
suppressed
Ссылка на ошибку, которая подавляется error.

Методы экземпляра

Наследует методы экземпляра от родительского Error.

Примеры

Обработка SuppressedError

SuppressedError выбрасывается, когда во время освобождения ресурсов возникает ошибка. Генерация ошибки вызывает очистку области видимости, и каждый освободитель во время очистки может сгенерировать свою собственную ошибку. Все эти ошибки собираются в цепочку экземпляров SuppressedError, где исходная ошибка является свойством suppressed, а новая ошибка, сгенерированная следующим освободителем, является свойством error.

try {
  using resource1 = {
    [Symbol.dispose]() {
      throw new Error("Error while disposing resource1");
    },
  };
  using resource2 = {
    [Symbol.dispose]() {
      throw new Error("Error while disposing resource2");
    },
  };
  throw new Error("Original error");
} catch (e) {
  console.log(e instanceof SuppressedError); // true
  console.log(e.message); // "An error was suppressed during disposal"
  console.log(e.name); // "SuppressedError"
  console.log(e.error); // Error: Error while disposing resource1
  console.log(e.suppressed); // SuppressedError: An error was suppressed during disposal
  console.log(e.suppressed.error); // Error: Error while disposing resource2
  console.log(e.suppressed.suppressed); // Error: Original error
}

Цепочка выглядит следующим образом:

       SuppressedError --suppressed--> SuppressedError --suppressed--> Original error
              |                               |
            error                           error
              v                               v
Error while disposing resource1   Error while disposing resource2
    (Disposal happens later)        (Disposal happens earlier)

Создание SuppressedError

try {
  throw new SuppressedError(
    new Error("New error"),
    new Error("Original error"),
    "Hello",
  );
} catch (e) {
  console.log(e instanceof SuppressedError); // true
  console.log(e.message); // "Hello"
  console.log(e.name); // "SuppressedError"
  console.log(e.error); // Error: "New error"
  console.log(e.suppressed); // Error: "Original error"
}

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

Спецификация
ECMAScript Async Explicit Resource Management
# sec-suppressederror-objects

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

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
SuppressedError
134
134
141
119
preview
134
141
88
No
29.0
134
No
1.0.23
2.2.10
No
SuppressedError
134
134
141
119
preview
134
141
88
No
29.0
134
No
1.0.23
2.2.10
No
error
134
134
141
119
preview
134
141
88
No
29.0
134
No
1.0.23
2.2.10
No
suppressed
134
134
141
119
preview
134
141
88
No
29.0
134
No
1.0.23
2.2.10
No

См. также

  • Polyfill of SuppressedError in core-js
  • Error
  • using
  • await using
  • DisposableStack
  • AsyncDisposableStack

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SuppressedError

Spec-Zone.ru

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