TGViewer
Angular Meetup Angular Meetup @angular_meetup · 138 subscribers
Post #88 157
#blog
Error.cause
в JavaScript - основные моменты:

Проблема классической обработки ошибок
В многоуровневом коде при оборачивании ошибок теряется стек вызовов и тип исходной ошибки. Обычно это выглядит так:

throw new Error('Something went wrong: ' + err.message);


При этом теряется контекст, усложняется отладка.

Error.cause: решение проблемы
Свойство cause позволяет сохранить исходную ошибку при создании новой.
Теперь доступны оба стека вызовов: верхнего уровня и исходной ошибки.
Пример вывода:

Error: Something went wrong
at ...
Caused by: SyntaxError: Unexpected token b in JSON at position 2
at JSON.parse
at ...


Более точные проверки в тестах
С cause можно проверять не только верхнеуровневую ошибку, но и её причину:

expect(err.cause).toBeInstanceOf(ValidationError);

Тесты становятся точнее и надёжнее.

Подводные камни и рекомендации
- cause не выводится автоматически через console.error(err) — нужно логировать отдельно.
- Не стоит оборачивать каждую мелкую ошибку — это может усложнить отладку.
- console.error(err.stack) выводит только стек текущей ошибки — для полного стека нужно обращаться к err.cause.stack.
Вывод полной цепочки ошибок можно реализовать через вспомогательные функции.

Поддержка в средах:
- Chrome 93+, Firefox 91+, Safari 15+, Edge 93+
- Node.js 16.9+
- Bun и Deno (актуальные версии)
Для TypeScript: требует "target": "es2022" и "lib": ["es2022"].

Статья: https://habr.com/ru/companies/timeweb/articles/967440/
Хабр Цепочка ошибок в JavaScript: удобная отладка кода с помощью Error.cause Обработка ошибок в JavaScript всегда была немного хаотичной. Получить ошибку легко, но отследить ее первоисточник бывает очень сложно. Именно здесь и приходит на помощь свойство cause . ❯ Проблема...
  • ❤ 3
More from @angular_meetup
  1. Sep 22, 2026#blog Сегодня посмотрим статью об адаптивных iframe в Chrome 154: ▪Новая возможность: Chro…
  2. Sep 14, 2026#blog Знаю, что сама тема не нова, но это не делает её неактуальной. Сегодня посмотрим ста…
  3. Aug 21, 2026#blog Вышел релиз Chrome 153 beta. Что в нем можно найти: -Особенность релиза: Chrome 153…
  4. Aug 11, 2026#blog Сегодня - статья о том, как стандарт Baseline помогает уменьшить размер JavaScript-б…
  5. Aug 3, 2026#blog Сегодня посмотрим на новый HTML элемент <usermedia>: - Новый элемент: Доступен в Chr…
  6. Jul 14, 2026#blog В июне был опубликован RFC с методом QUERY в HTTP (и почти одновременно он был добав…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →