Sobes.tech
Назад к вопросам
Middle+
1

Какие есть способы обработать ошибку в Promise? Можно ли использовать конструкцию try/catch?

Компании, где спрашивали
VK Tech

Ответ от нейросети

sobes.tech AI

В 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.