Новое свойство cause
в объекте error
позволяет узнать исходную причину сбоя и облегчить отладку, особенно при повторении ошибок. Оно помогает выстроить цепочку событий и лучше понимать, где возникла проблема. Свойство доступно в Baseline в статусе «Widely Available» с 20 марта 2024 года.
Что такое cause и зачем оно нужно
Сегодня вам бесплатно доступен тренажёр по HTML и CSS.
При работе с ошибками в JavaScript часто возникает ситуация, когда нужно перехватить исключение, выполнить какие-то действия, а затем выбросить новую ошибку. В такой цепочке легко потерять исходную причину. Свойство cause
позволяет передать оригинальную ошибку дальше по цепочке, не теряя контекста.
Простой пример с cause
В следующем коде создаются две ошибки — одна основная и одна обёрточная, которая включает первую в качестве причины:
try {
// что-то может привести к ошибке
throw new Error('Ошибка 1');
} catch (error) {
// повторный выброс с указанием причины
throw new Error('Обработка ошибки', { cause: error });
}
В данном случае вы можете обработать внешнюю ошибку, но всё равно получить доступ к её первопричине через error.cause
.
Как узнать причину ошибки
try {
try {
throw new Error('Исходная ошибка');
} catch (inner) {
throw new Error('Новая ошибка', { cause: inner });
}
} catch (final) {
console.error(final.message); // 'Новая ошибка'
console.error(final.cause); // Error: 'Исходная ошибка'
}
Таким образом, вы получаете полную информацию об ошибке, включая контекст, из которого она возникла. Это особенно важно при работе с асинхронным кодом, цепочками промисов и при написании логгирования для продакшн-приложений.
Преимущества использования cause
- Позволяет не терять контекст исходной ошибки.
- Упрощает трассировку ошибок в логах и отладке.
- Работает стандартно и понятно, без необходимости придумывать собственные обёртки или поля.
Совместимость
Свойство cause
поддерживается в современных браузерах и средах, включая Node.js.
Больше обзоров веб-функций — в телеграм-канале HTML Academy.
Нашли ошибку или опечатку? Напишите нам.