Встречается на собеседованиях • сегодня

Получится ли отловить ошибку внутри setTimeout через try-catch-finally

Нет, стандартный try-catch не отловит ошибку внутри setTimeout, так как колбэк выполняется асинхронно, в другом цикле событий. Для обработки ошибок в асинхронном коде нужно:

  1. Использовать try-catch внутри самого колбэка:
js
setTimeout(() => {
  try {
    throw new Error('Ошибка!');
  } catch (err) {
    console.error('Поймали:', err);
  }
}, 1000);
  1. Либо использовать Promise с .catch():
js
new Promise((resolve, reject) => {
  setTimeout(() => {
    try {
      throw new Error('Ошибка!');
      resolve();
    } catch (err) {
      reject(err);
    }
  }, 1000);
}).catch(err => console.error('Поймали:', err));

Также можно глобально отлавливать такие ошибки через window.onerror или process.on('uncaughtException') в Node.js.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы