Код IT
← Каталог

Обработка исключений в JavaScript — Синхронный код vs Promise и async/await

Фрагмент из «Обработка исключений в JavaScript»: Синхронный код vs Promise и async/await.

javascript javascriptencyclopedia242 embed URL статья в энциклопедии
JavaScript main.js
// Правильно: await в try
async function save() {
  try {
    await db.insert(row);
  } catch (e) {
    logger.error(e);
    throw e;
  }
}

// Ошибка: забыли await — rejection уйдёт мимо try
async function broken() {
  try {
    db.insert(row); // Promise без await
  } catch (e) {
    /* сюда не попадём при reject */
  }
}
// Правильно: await в try
async function save() {
  try {
    await db.insert(row);
  } catch (e) {
    logger.error(e);
    throw e;
  }
}

// Ошибка: забыли await — rejection уйдёт мимо try
async function broken() {
  try {
    db.insert(row); // Promise без await
  } catch (e) {
    /* сюда не попадём при reject */
  }
}