Код Junior Ошибки и логирование обновлено

Цепочка причин ошибки (error.cause)

Условие

Начиная с ES2022 ошибку можно обернуть: new Error('Cannot load user', { cause: err }). Напиши:

  1. wrap(err, message): новая Error с message и cause = err;
  2. causeChain(err): массив сообщений от внешней ошибки к самой глубокой причине. Если cause не ошибка (например строка), добавь её как есть строкой и остановись. Защитись от циклов (ошибка, которая через цепочку ссылается сама на себя): повторно встреченную ошибку не добавляй.

Что проверяют тесты

  • wrap сохраняет причину

  • цепочка из трёх

  • без причины

  • причина строкой

  • цикл

  • наследники Error

Как подойти

Подсказки: 2
  1. new Error(message, { cause }).
  2. Иди по cause в цикле с Set посещённых.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.