Почему использовал async/await с try-catch вместо Promise.then().catch()?

В JavaScript для обработки ошибок в Promise есть несколько способов:

Короткий ответ

Что ответить на собеседовании

В JavaScript для обработки ошибок в Promise есть несколько способов:

Подробный разбор

Ответ с пояснениями

В JavaScript для обработки ошибок в Promise есть несколько способов:

  1. Метод .catch() — самый распространённый способ обработки ошибок:
fetch('url')
  .then(response => response.json())
  .catch(error => {
    console.error('Ошибка:', error);
  });
  1. Второй аргумент в .then(onFulfilled, onRejected) — можно передать функцию обработки ошибки:
promise.then(
  result => { /* обработка результата */ },
  error => { /* обработка ошибки */ }
);
  1. Использование async/await с конструкцией try/catch:
async function fetchData() {
  try {
    const response = await fetch('url');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Ошибка:', error);
  }
}

Важно: конструкцию try/catch нельзя использовать напрямую вокруг вызова promise.then(), чтобы поймать ошибки внутри промиса. try/catch работает с await или синхронным кодом. Если использовать try/catch без await, ошибки в промисах не будут пойманы.

Итого:

  • Для обработки ошибок в промисах можно использовать .catch() или второй аргумент .then().
  • Для async/await используйте try/catch.
  • Нельзя использовать try/catch для обработки ошибок в промисах без await.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку