JS JavaScript  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Ошибки, исключения и чтение трассировки

Тест проверяет создание Error, собственные классы ошибок, try/catch/finally, границы синхронного перехвата и работу с трассировкой. Практические вопросы требуют не скрывать причину сбоя и выбирать следующий диагностический шаг по имеющимся данным.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 20 вопросов и 55 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 4 тематических шкал и объяснение каждого решения.
Вопрос 1 из 20
Почему throw new Error("Нет файла") обычно лучше throw "Нет файла"?
Вопрос 2 из 20
Что выведет обработчик?
JavaScript
try {
  throw new RangeError("За пределами диапазона");
} catch (error) {
  console.log(error.name);
}
Вопрос 3 из 20
Как сохранить исходную ошибку при добавлении контекста?
JavaScript
try {
  await loadConfig();
} catch (error) {
  throw new Error("Не удалось загрузить конфигурацию", { cause: error });
}
Вопрос 4 из 20
Когда уместен собственный класс ValidationError?
Вопрос 5 из 20
Какой исход лучше вернуть при обычном отсутствии элемента в поиске?
Вопрос 6 из 20
Какой порядок строк будет выведен?
JavaScript
try {
  console.log("try");
  throw new Error("x");
} catch {
  console.log("catch");
} finally {
  console.log("finally");
}
Вопрос 7 из 20
Как finally изменит значение, возвращаемое из try?
JavaScript
function read() {
  try { return 1; }
  finally { return 2; }
}
console.log(read());
Вопрос 8 из 20
Что произойдёт с исходной ошибкой?
JavaScript
try {
  throw new Error("first");
} finally {
  throw new Error("second");
}
Вопрос 9 из 20
Почему этот try/catch не ловит ошибку таймера?
JavaScript
try {
  setTimeout(() => {
    throw new Error("later");
  }, 0);
} catch (error) {
  console.log("caught");
}
Вопрос 10 из 20
Для чего finally подходит лучше всего?
Вопрос 11 из 20
В каком порядке обычно расположены кадры stack?
JavaScript
function load() { throw new Error("Нет данных"); }
function render() { load(); }
render();
Вопрос 12 из 20
Что сохраняет исходную трассировку лучше?
JavaScript
try {
  parseConfig();
} catch (error) {
  // Какой вариант повторного выброса сохранит место исходного сбоя?
}
Вопрос 13 из 20
Зачем source map нужен в браузерном приложении?
Вопрос 14 из 20
Почему нельзя полагаться на жёсткий разбор Error.stack во всех средах?
Вопрос 15 из 20
Какие данные опасно бездумно добавлять в message и stack-контекст?
Вопрос 16 из 20
Какой первый шаг полезнее при редком сбое на конкретном входе?
Вопрос 17 из 20
Лог показывает TypeError: cannot read properties of undefined в renderProfile. Что проверять первым?
JavaScript
function renderProfile(user) {
  return user.profile.name.toUpperCase();
}
Вопрос 18 из 20
Что даёт временная проверка инварианта рядом с первой неверной точкой?
JavaScript
function total(order) {
  if (!Array.isArray(order.items)) {
    throw new TypeError("order.items должен быть массивом");
  }
  return order.items.reduce((sum, item) => sum + item.price, 0);
}
Вопрос 19 из 20
Почему пустой catch опасен при расследовании?
JavaScript
try {
  await saveOrder(order);
} catch {
  // Ошибка потеряна, выполнение продолжается.
}
Вопрос 20 из 20
Как подтвердить, что исправлена первопричина, а не один симптом?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу