Код Junior Ошибки и логирование обновлено
Цепочка причин ошибки (error.cause)
Условие
Начиная с ES2022 ошибку можно обернуть: new Error('Cannot load user', { cause: err }). Напиши:
wrap(err, message): новаяErrorсmessageиcause = err;causeChain(err): массив сообщений от внешней ошибки к самой глубокой причине. Еслиcauseне ошибка (например строка), добавь её как есть строкой и остановись. Защитись от циклов (ошибка, которая через цепочку ссылается сама на себя): повторно встреченную ошибку не добавляй.
Что проверяют тесты
wrap сохраняет причину
цепочка из трёх
без причины
причина строкой
цикл
наследники Error
Как подойти
Подсказки: 2
new Error(message, { cause }).- Иди по
causeв цикле сSetпосещённых.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Circuit breaker: closed, open, half-open
Следующий вопрос
Graceful shutdown: дождаться запросов в работе