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"
}
Спецификации
Совместимость с браузерами
| 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 |
См. также
© 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